linq查询无法正常工作

时间:2012-04-04 21:08:10

标签: linq

我有以下查询:

            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”。

似乎我的查询错误,因为没有返回任何内容。

2 个答案:

答案 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查询最终都是一个迭代器) ..)。