这可能是一个非常基本的问题,但我没有使用过Linq,所以需要帮助。 我想根据相关记录计数检索记录列表。
例如:
我有一个与'角色'实体有1:N关系的联系实体。我想选择
的联系人如何使用Linq
编写此内容from contact in context.ContactSet
where <contact.Roles has no records> -- ??
select contact;
请帮忙。
答案 0 :(得分:2)
您可以使用Count()
或Any()
方法
Count() - 返回序列中元素的数量。
Any() - 确定序列中的任何元素是否满足条件。
查询语法
from contact in context.ContactSet
where contact.Roles.Count() == 0
select contact;
方法语法
context.ContactSet.Where(c=> c.Roles.Count() != 0));
查询语法
from contact in context.ContactSet
where !contact.Roles.Any()
select contact;
方法语法
context.ContactSet.Where(c=> !c.Roles.Any());
答案 1 :(得分:1)
选择没有角色的联系人:
from contact in context.ContactSet
where !contact.Roles.Any()
select contact;
或简单地说:
context.ContactSet.Where(c=> !c.Roles.Any());
选择分配了n个角色的联系人:
from contact in context.ContactSet
where contact.Roles.Count()==n
select contact;
或简单地说:
context.ContactSet.Where(c=> c.Roles.Count()==n));
答案 2 :(得分:1)
以下内容将选择Roles
集合中正好包含0或1个项目的所有联系人。根据集合的类型和数据访问技术,Count
属性可以通过一种方法,例如, Count()
。 (Count
也有重载,因此您可以有条件地计算项目,例如.Count(x => x.SomeProperty && !x.SomeOtherProperty)
from contact in context.ContactSet
where contact.Roles.Count <= 1
select contact;
答案 3 :(得分:1)
您可以使用Count() <= 1
Linq风格:
from contact in context.ContactSet
where contact.Roles.Count() <= 1
select contact;
方法风格:
context.ContactSet.Where(c => c.Roles.Count() <= 1);