我有以下查询:
var req= (from tl in resultlist
where (tl.Message.StartsWith("Do not return") && tl.Type == "Int") &&
(tl.Note.StartsWith("Do no return") && tl.Type == "Ext")
select tl).Any();
我正在尝试查看是否有记录,其中Message以“Do not return”开头,Type为“Int” 还有另一条消息,其中Note以“Do no return”开头,Type为“Ext”。
似乎我的查询错误,因为没有返回任何内容。
答案 0 :(得分:1)
您可能想要更改&&到||正如其中一条评论(Joachim Isaksson)指出的那样。您要求在一个实体上以两种不同的方式存在属性(.Type)。这是不可能的。
尝试
req= (from tl in resultlist
where (tl.Message.StartsWith("Do not return") && tl.Type == "Int") ||
(tl.Note.StartsWith("Do no return") && tl.Type == "Ext")
select tl).Any();
答案 1 :(得分:0)
var intMessages = from tl in resultlist
where tl.Message.StartsWith("Do not return")
&& tl.Type == "Int"
select tl;
var extMessages = from tl in resultlist
where tl.Message.StartsWith("Do not return")
&& tl.Type == "Ext"
select tl;
var intAndExtMessages = intMessages.Any() && extMessages.Any();
这将确保在结果集中有一些“不返回”消息,这些消息以同一结果集中的"Int"
AND 开头其他以“Ext”
函数(查询中的条件)检查源元素是否满足某些要求,因此如果检查同一对象的Type为“Int”且“Ext”是不可能的,因为不能有两个字符串值同时。
另一方面,你需要找出结果列表中是否存在两种不同类型的项或两种独有条件,所以这不能在一次迭代中完成(每个LINQ查询最终都是一个迭代器) ..)。