检查值是否在LINQ集合中

Kri*_*s-I 7 c# linq collections lambda

我有一个"Employee"类,它有一个IList <> of"TypeOfWork".

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; }
}
Run Code Online (Sandbox Code Playgroud)

在保存之前,我很想知道"typeofwid"(一个Guid)是否已经存在于"TypeOfWorks"集合中.

我试过这个:

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

并试过这个:

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

在Visual Studio的"立即窗口"中但我收到错误:表达式在两种情况下都不能包含查询表达式

你有好主意吗 ?

谢谢,

Jos*_*dan 19

正是错误所说的.您不能在立即窗口中使用LINQ查询,因为它们需要编译lambda函数.尝试实际代码中的第一行,可以编译它.:)

此外,要在一行中完成所有操作,您可以使用LINQ"Any"运算符,如下所示:

if( ! employee.TypeOfWorks.Any(tow => tow.Id == theNewGUID) )
    //save logic for TypeOfWork containing theNewGUID
Run Code Online (Sandbox Code Playgroud)