C# 询问用户在数据库中是否有多条记录的更好方法
我有一行代码:C# 询问用户在数据库中是否有多条记录的更好方法,c#,linq,C#,Linq,我有一行代码: var userHasMultipleProjects = _context.Clients .Where(x => x.IdentityId == user.Id) .Select(a => a.Projects) .Count() > 1 ? true : false; 我可以在用户有多个项目的情况下使用Any()吗?如果Projects.Count()>1,下面将返回true/false: _context.Clients
var userHasMultipleProjects = _context.Clients
.Where(x => x.IdentityId == user.Id)
.Select(a => a.Projects)
.Count() > 1 ? true : false;
我可以在用户有多个项目的情况下使用
Any()
吗?如果Projects.Count()>1
,下面将返回true/false:
_context.Clients
.Where(x => x.IdentityId == user.Id && x.Projects.Count() > 1)
.Any();
那么你想知道是否有不止一个?这个怎么样
bool moreThanOneAvailable = FetchSomeData()
.Skip(1)
.Any();
或者在您的情况下:
bool userHasMultipleProjects = _context.Clients
.Where(client => client.IdentityId == user.Id)
.SelectMany(client => client.Projects)
.Skip(1)
.Any());
换句话说:从所有客户端,保留那些属性IdentityId值等于user.Id中主键的客户端
从剩余的每个客户(我们只希望有一个客户)获取他们的项目,并对所有这些项目进行排序
从这个序列或项目中,忽略第一个,看看是否还有项目
如果希望所有客户端都有多个项目:
var clientsWithMoreThanOneProject = dbContext.Clients
.Where(client => client.Projects.Skip(1).Any());
换句话说:从所有客户机中,如果您忽略了他们的第一个项目,则只保留剩下项目的客户机,或者换句话说:只保留有多个项目的客户机。
?true:false是多余的,可以简单地删除。跳过(1)。任何()
而不是Count()>1
根据ORM,跳过可能需要前面的OrderBy。