c# – LINQ indexOf一个特定的条目

我有一个MVC3 C#.Net网络应用程序.我有以下字符串数组.
public static string[] HeaderNamesWbs = new[]
                                       {
                                          WBS_NUMBER,BOE_TITLE,SOW_DESCRIPTION,HARRIS_WIN_THEME,COST_BOGEY
                                       };

我想在另一个循环中找到给定条目的索引.我以为这个列表会有一个IndexOf.我找不到它有任何想法吗?

解决方法

那么你可以使用Array.IndexOf:
int index = Array.IndexOf(HeaderNamesWbs,someValue);

或者只是将HeaderNamesWbs声明为IList< string>而是 – 如果你想要的话,它仍然可以是一个数组:

public static IList<string> HeaderNamesWbs = new[] { ... };

请注意,我不鼓励您将数组暴露为public static,甚至公开静态readonly.你应该考虑ReadOnlyCollection:

public static readonly ReadOnlyCollection<string> HeaderNamesWbs =
    new List<string> { ... }.AsReadOnly();

如果你想要这个IEnumerable< T>,你可以使用:

var indexOf = collection.Select((value,index) => new { value,index })
                        .Where(pair => pair.value == targetValue)
                        .Select(pair => pair.index + 1)
                        .FirstOrDefault() - 1;

(1和-1是这样的,它将返回-1为“missing”,而不是0)

相关文章

在项目中使用SharpZipLib压缩文件夹的时候,遇到如果目录较深,则压缩包中的文件夹同样比较深的问题。比...
项目需要,几十万张照片需要计算出每个照片的特征值(调用C++编写的DLL)。 业务流程:选择照片...
var array = new byte[4]; var i = Encoding.UTF8.GetBytes(100.ToString(&quot;x2&quot;));//...
其实很简单,因为Combox的Item是一个K/V的object,那么就可以把它的items转换成IEnumerable&lt;Dic...
把.net4.6安装包打包进安装程序。 关键脚本如下: 头部引用字符串对比库 !include &quot;WordFunc....
项目需求(Winform)可以批量打印某个模板,经过百度和摸索,使用iTextSharp+ZXing.NetʿreeSp...