使用 LINQ 检查某个值是否在集合中
我有一个类“Employee”,它有一个 IList<> “工作类型”。
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 ;
并尝试了这个:
bool res = employee.TypeOfWorks.Where(f => f.Id == new Guid("11111111-1111-1111-1111-111111111111")).Count() != 0;
在 Visual Studio 的“立即窗口”中,但我收到错误:表达式不能包含查询表达式 在这两种情况下
你有想法吗?
谢谢,
I have a class "Employee", this has an 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; }
}
before saving, I'd lile to know if "typeofwid" (a Guid) is already in the "TypeOfWorks" collection.
I tried this :
var res = from p in employee.TypeOfWorks
where p.Id == new Guid("11111111-1111-1111-1111-111111111111")
select p ;
and tried this :
bool res = employee.TypeOfWorks.Where(f => f.Id == new Guid("11111111-1111-1111-1111-111111111111")).Count() != 0;
in the "Immediate Window" of Visual Studio but I receive the error : Expression cannot contain query expressions in both case
Do you have an idea ?
Thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
正是错误所说的。 您无法在立即窗口中使用 LINQ 查询,因为它们需要编译 lambda 函数。 尝试实际代码中的第一行,可以对其进行编译。 :)
另外,要在一行中完成这一切,您可以使用 LINQ“Any”运算符,如下所示:
Just what the error says. You can't use LINQ queries in the Immediate Window because they require compilation of lambda functions. Try the first line in your actual code, where it can be compiled. :)
Also, to get this all done in one line, you can use the LINQ "Any" operator, like so:
怎么样:
问题是构建 guid - 否则 linq 查询应该可以工作
How about this:
The problem is constructing the guid - otherwise the linq queries should work
事实上,我认为其中任何一个都有效。 请记住,Visual Studio 也无法处理监视窗口中的 Linq 查询,因此我怀疑您看到的错误更多的是 Visual Studio 问题,而不是代码无法正常工作。
I think either of those work, actually. Keep in mind Visual Studio can't handle Linq Queries in the watch window either, so I suspect the error you saw is more of a Visual Studio problem than the code not working.
尝试此代码来获取未初始化的 typeofwork 的计数。
Try this code to get the count of typeofwork not initialized.