Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
嵌套LINQ查询_Linq_Nested - Fatal编程技术网

嵌套LINQ查询

嵌套LINQ查询,linq,nested,Linq,Nested,我正在尝试执行嵌套linq查询 public class Sic { public int Id { get; set; } public string Code { get; set; } } public class Message { public List<Sic> Sics { get; set; } public int Id { get; set; } } List<Message> msgList = new List&

我正在尝试执行嵌套linq查询

public class Sic
{
    public int Id { get; set; }
    public string Code { get; set; }
}

public class Message
{
    public List<Sic> Sics { get; set; }
    public int Id { get; set; }
}

List<Message> msgList = new List<Message>();


Message m1 = new Message
            {
                Id = 0,
                Sics = new List<Sic>()
                    {
                        new Sic() {Id = 0, Code = "A2A"},
                        new Sic() {Id = 1, Code = "A2B"},
                        new Sic() {Id = 2, Code = "A2C"},
                        new Sic() {Id = 3, Code = "A2D"}
                    }
            };

Message m2 = new Message
        {
            Id = 1,
            Sics = new List<Sic>()
                    {
                        new Sic() {Id = 4, Code = "B2A"},
                        new Sic() {Id = 5, Code = "B2B"},
                        new Sic() {Id = 6, Code = "B2C"},
                        new Sic() {Id = 7, Code = "B2D"}
                    }
        };

msgList.Add(m1);
msgList.Add(m2);

List<string> searchList = new List<string> {"A2A", "A2B"};
公共类Sic
{
公共int Id{get;set;}
公共字符串代码{get;set;}
}
公共类消息
{
公共列表Sics{get;set;}
公共int Id{get;set;}
}
List msgList=新列表();
消息m1=新消息
{
Id=0,
Sics=新列表()
{
新的Sic(){Id=0,Code=“A2A”},
新的Sic(){Id=1,Code=“A2B”},
新的Sic(){Id=2,Code=“A2C”},
新建Sic(){Id=3,Code=“A2D”}
}
};
消息m2=新消息
{
Id=1,
Sics=新列表()
{
新的Sic(){Id=4,Code=“B2A”},
新的Sic(){Id=5,Code=“B2B”},
新的Sic(){Id=6,Code=“B2C”},
新建Sic(){Id=7,Code=“B2D”}
}
};
msgList.Add(m1);
msgList.Add(m2);
列表搜索列表=新列表{“A2A”、“A2B”};

我想在msgList中查找每条消息的SIC中包含searchList的消息,即应使用上述searchList查找m1。

您可以使用以下内容:

msgList.Where(msg=>msg.Sics.Any(sic=>searchList.Contains(sic.Code)));
或者如果您需要匹配所有搜索词

msgList.Where(msg => searchList.All(searchTerm=>msg.Sics.Any(sic=>sic.Code==searchTerm)))
如果需要匹配searchlist中的所有ID

如果需要匹配searchlist中的任何id

我认为OP的意思是“搜索列表中的所有ID”都包含在消息的SIC中。
msgList.Where(msg => searchList.Any() && searchList.All(s => msg.Sics.Any(sic => s==sic.Code)))
msgList.Where(msg=>msg.Sics.Any(sic=>searchList.Contains(sic.Code)));