2009-07-25 15 views
7

"Employee"クラスがあります。これには "TypeOfWork"のIList <があります。値がLINQのコレクション内にあるかどうか確認

public class Employee 
{ 
    public virtual IList<TypeOfWork> TypeOfWorks { get; set; } 
} 

public class TypeOfWork 
{ 
    public virtual Customer Customer { get; set; } 

    public virtual Guid Id { get; set; } 
    public virtual string Name{ get; set; } 
    public virtual bool IsActive{ get; set; } 
} 

保存する前に、 "typeofwid"(Guid)がすでに "TypeOfWorks"コレクションに入っているかどうかを知りたいと思います。

私はこの試みた:

var res = from p in employee.TypeOfWorks 
      where p.Id == new Guid("11111111-1111-1111-1111-111111111111") 
      select p ; 

をして、この試みた:のVisual Studioの "イミディエイトウィンドウ" で

bool res = employee.TypeOfWorks.Where(f => f.Id == new Guid("11111111-1111-1111-1111-111111111111")).Count() != 0; 

を私はエラーが表示されます。式は、クエリ式に両方でを含めることはできませんケース

アイデアはありますか?

おかげで、エラーが言うだけで何

答えて

19

。 Lambda関数のコンパイルが必要なので、イミディエイトウィンドウでLINQクエリを使用することはできません。実際のコードの最初の行をコンパイルすることができます。また、これはすべて1行で行わ取得する:)

、あなたはそうのような「任意」演算子、LINQを使用することができます。

if(! employee.TypeOfWorks.Any(tow => tow.Id == theNewGUID)) 
    //save logic for TypeOfWork containing theNewGUID 
0

を私は実際には、これらの作業のいずれかを考えます。 Visual Studioでは、ウォッチウィンドウでLinqクエリを処理することはできませんので、表示されているエラーは、コードが機能していない場合よりもVisual Studioの問題であると考えられます。

0

初期化されていない型の数を取得するには、このコードを試してください。

if(employee.TypeOfWorks 
    .Count(f => f.Id != new Guid("11111111-1111-1111-1111-111111111111")) != 0) 
{ 
    //do something 
} 
1

方法について

Guid guid = Guid.NewGuid("11111111-1111-1111-1111-111111111111"); 
var res = from p in employee.TypeOfWorks 
      where p.Id == guid 
      select p ; 

The problem is constructing the guid - otherwise the linq queries should work 
関連する問題