嵌套LINQ查询
我正在尝试执行嵌套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&
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)));