0

我有以下查询:

            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();

我正在尝试查看是否有消息以“不返回”开头且类型为“Int”的记录,并且还有另一条消息,其中注释以“不返回”开头且类型为“Ext”。

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

4

2 回答 2

1

您可能想将 && 更改为 || 正如上面的评论之一(Joachim Isaksson)指出的那样。您要求属性 (.Type) 在一个实体上以 2 种不同方式存在。这是不可能的。

尝试

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(); 
于 2012-04-04T21:19:26.060 回答
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();

这将确保在结果集中有一些以AND开头的“不返回”消息在同一结果集中还有一些其他以“Ext”开头的消息"Int"

该函数(查询中的条件)检查源元素是否满足某些要求,因此如果您检查同一对象的类型为“Int”和“Ext”是不可能的,因为不能同时有两个字符串值.

另一方面,您需要确定结果列表中是否存在两种不同类型或两种排他条件的项目,因此不能在一次迭代中完成(每个 LINQ 查询最终都是一个迭代器..) .

于 2012-04-04T21:14:41.960 回答