4

Fruits次の列を含むテーブルがあります

UserID | FruitID

UserID が FruitID で承認されていることを確認したいので、次のように書いています。

var IsAuthorized = (from f in MyDC.Fruits
                    where f.UserID == TheUserID && f.FruitID == TheFruitID
                    select f.FruitID).SingleOrDefault();

したがって、ユーザーが承認されている場合、クエリは ID を返し、承認されていない場合は null を返します。次に、戻り値が null かどうかを確認し、戻り値に基づいて bool を設定します。

私がやりたいのは bool を返すことです: ユーザーが承認されている場合は、true を返す必要があります。

ブール値を返すようにクエリを変更するにはどうすればよいですか?

ありがとう。

4

2 に答える 2

15
var IsAuthorized = from (f in MyDC.Fruits
                         where f.UserID == TheUserID && f.FruitID == TheFruitID
                         select f.FruitID).SingleOrDefault() != null;

または、これを基礎となる LINQ プロバイダーで実行したい場合 (たとえば、SQL サーバーを使用している場合)は、.Anyより優れた拡張メソッドを使用できます。

var IsAuthorized = MyDC
    .Fruits
    .Any(f => f.UserID == TheUserID && f.FruitID == TheFruitID);
于 2012-10-12T16:01:13.957 に答える
13

Any() は、ソース シーケンスに要素が含まれている場合は true を返します。それ以外の場合は false。

var IsAuthorized = from (f in MyDC.Fruits
                             where f.UserID == TheUserID && f.FruitID == TheFruitID
                             select f.FruitID).Any();
于 2012-10-12T16:02:37.490 に答える