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

あなたはおそらくその&&を||に変更したいと思うでしょう 上記のコメントの1つ(Joachim Isaksson)が指摘しているように。プロパティ(.Type)が1つのエンティティに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();

これにより、結果セットに「返送しない」メッセージが含まれ、同じ結果セットに「 "Int" Ext で始まる他のメッセージが含まれるようになります。

関数(クエリの条件)は、ソース要素がいくつかの要件を満たしているかどうかをチェックします。したがって、同じオブジェクトのタイプが「Int」であるか「Ext」であるかをチェックする場合、同時に2つの文字列値を持つことはできないため、「Ext」は不可能です。 。

一方、結果リストに2つの異なるタイプのアイテムが存在するか、または2つの排他的な条件があるかを確認する必要があるため、これを1回の反復で実行することはできません(各LINQクエリは最終的にイテレーターになります)。 。

于 2012-04-04T21:14:41.960 に答える