Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 询问用户在数据库中是否有多条记录的更好方法_C#_Linq - Fatal编程技术网

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。