我有一个MVC 3 C#.Net Web应用程序。我有下面的字符串数组。
public static string[] HeaderNamesWbs = new[]
{
WBS_NUMBER,
BOE_TITLE,
SOW_DESCRIPTION,
HARRIS_WIN_THEME,
COST_BOGEY
};
字符串
我想在另一个循环中找到给定条目的索引。我以为列表会有一个IndexOf。我找不到它。有什么想法吗?
5条答案
按热度按时间rta7y2nd1#
你可以使用
Array.IndexOf
:字符串
或者只是将
HeaderNamesWbs
声明为IList<string>
-如果你愿意,它仍然可以是一个数组:型
请注意,我不鼓励你将数组公开为
public static
,甚至public static readonly
。你应该考虑ReadOnlyCollection
:型
如果你想在
IEnumerable<T>
上使用这个,你可以使用:用途:型
(The+1和-1是这样的,它将返回-1表示“missing”,而不是0。
7tofc5zh2#
我在这里的线程晚了。但我想分享我的解决方案。乔恩的是可怕的,但我更喜欢简单的所有东西。
你可以扩展LINQ本身来得到你想要的。这相当简单。这将允许你使用这样的语法:
字符串
这可能不是LINQ默认的一部分,因为它需要枚举。它不仅仅是另一个延迟选择器/ predicate 。
另外,请注意,这只返回第一个索引。如果你想要索引(复数),你应该在方法内部返回
IEnumerable<int>
和yield return index
。当然不要返回-1。这在你不通过主键过滤的情况下会很有用。型
h79rfbju3#
如果要使用函数而不是指定项值来搜索List,则可以使用List.FindIndex( predicate 匹配)。
参见https://learn.microsoft.com/en-us/dotnet/api/system.collections.generic.list-1.findindex?view=netframework-4.8
5q4ezhmt4#
右
List
有IndexOf(),只需将其声明为ILIst<string>
而不是string[]
字符串
MSDN:List(Of T).IndexOf Method (T)
eblbsuwk5#
用于获取集合中任何项的偏移量(也称为从零开始的索引)的广义扩展方法。
字符串
sharplab.io有一个Playground。
执行
型