Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#获取列表中列表值匹配的列表元素_C#_List_Linq - Fatal编程技术网

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

我有个问题。在我的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; 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
,如何设置
图片索引