C#获取列表中列表值匹配的列表元素
我有个问题。在我的C代码中,我有一个C#获取列表中列表值匹配的列表元素,c#,list,linq,C#,List,Linq,我有个问题。在我的C代码中,我有一个列表lstSets。在一个集合中,我有另一个列表图片。 picture类如下所示: public class Set { public int Id { get; set; } public List<Picture> Pictures{ get; set; } } public class Picture { public int Id { get; set; } public string Name { get
列表lstSets
。在一个集合中,我有另一个列表图片
。
picture类如下所示:
public class Set
{
public int Id { get; set; }
public List<Picture> Pictures{ get; set; }
}
public class Picture
{
public int Id { get; set; }
public string Name { get; set; }
}
现在我有一张随机图片,我知道Id和名称,但我需要在图片列表中获取图片的索引,我需要知道设置的Id
我知道如何从一个列表中获取某些内容的代码:
myList.FindIndex(a => a.prop == prop);
但这是列表中的一个列表
所以我想:
int SetId = ....
int PictureIndex = ....
如何执行此操作?下面的Linq
表达式通过使用和方法返回集合的Id
。如果没有此类项目,则使用将索引设置为0
var setId=lstSets.FirstOrDefault(l=>l.Pictures.Any(p=>p.Id==pictureId))?.Id??0;
此代码可用于获取图片集合中的图像索引
var指数=0;
foreach(lstSets.Where(set=>set.Pictures.Any(p=>p.Id==pictureId))中的变量集)
{
index=set.Pictures.FindIndex(p=>p.Id==pictureId);
}
它试图在每个集合
对象中查找图片索引。还有一个选项,可以使用方法查看所有集合
项的所有图片
,请尝试此方法
int setId = -1;
var picIndex = -1;
foreach (var set in lstSets)
{
picIndex = set.Pictures.FindIndex(p => p.Id == picToFind.Id && p.Name == picToFind.Name);
if (picIndex > -1)
{
setId = set.Id;
break;
}
}
是否要使用LINQ?set.FirstOrDefault(s=>s.Pictures.Any(p=>p.Id==picture.Id))
将返回在其图片
列表中具有匹配图片id的第一组。我看到您正在设置设置id
,如何设置图片索引
?