很难解释用“普通”语言编写它的问题,所以我只发布我的代码(这会更容易理解):
我有我的课程File
:
public class File
{
public string Url { get; set; }
public string Name { get; set; }
public string Date { get; set; }
public Bitmap Bitmap { get; set; }
}
因此,我创建了files
的列表:
var files = new List<File>();
而且,我已经在其中填充了数据。
现在我有一个string
(仅此)。我想在列表中找到包含该string
的元素的索引。
类似的东西:
int index = files.IndexOf(new File
{
string.Empty,
myString,
string.Empty,
null
});
有什么主意吗?
答案 0 :(得分:5)
List
类具有一个名为FindIndex
的方法,该方法以Predicate<T>
作为参数。
您可以像这样使用它:
var index = files.FindIndex(f => f.Name == myString);
它将返回与谓词匹配的第一个元素的索引;如果未找到该元素,则返回-1。
答案 1 :(得分:0)
我想您想找到Name
属性等于myString
variale的第一个元素的索引:
var index = files.IndexOf(files.Where(x => x.Name == myString).FirstOrDefault());
或更简单的方法:
var index = files.IndexOf(files.FirstOrDefault(x => x.Name == myString));`
如果找不到这样的元素,则两者都返回-1。
答案 2 :(得分:0)
首先,我找到包含Name
的所有myString
实例,然后使用IndexOf
在列表中查找其索引。结果是实例的集合索引
var indexs = files.Where(f => f.Name.Contains(myString)).Select(ft=> files.IndexOf(ft));
答案 3 :(得分:0)
为什么不像这样使用foreach
循环
int pos = -1;
foreach(File file in files)
{
pos++;
if(file.Name == "string")
break;
}