我有以下类:
Public Class User
{
public List<SpecificUser> SpecificUsers{get;set;}
}
Public Class SpecificUser
{
public bool IsDefault{get;set;}
public List<SpecificUserRole> SpecificUserRoles{get;set;}
}
Public Class SpecificUserRoles
{
public bool IsPrimary{get;set;}
}
要求:给定一个用户对象,我只想获得IsDefault=true且(该特定用户(具有"a"SpecificUserRole的SpecificUser对象其中IsPrimary=true。这是我尝试过的,但它返回的是bool,而不是SpecificUser的实例。
var defaultSpecificUser = user.SpecificUsers.Select(au => au.IsDefault && au.SpecificUserRoles.Select(aur => aur.IsPrimary).FirstOrDefault()).FirstOrDefault();
我可以通过两个查询来实现它;但想一次搞定:
var defaultSpecificUsers = user.SpecificUsers.Where(au => au.IsDefault).ToList();
var primarySpecificUser = defaultSpecificUsers .FirstOrDefault(ddau => ddau.SpecificUserRoles.Select(aur => aur.IsPrimary).FirstOrDefault());
如有任何帮助,我们将不胜感激。提前谢谢。
这似乎很简单:
user.SpecificUsers.Where(su => su.IsDefault == true && su.SpecificUserRoles.Any(sr => sr.IsPrimary == true));
或简化:
user.SpecificUsers.Where(su => su.IsDefault && su.SpecificUserRoles.Any(sr => sr.IsPrimary);
当然,这是假设不止一个特定用户符合标准。如果您只想要一个,请将Where
替换为First
,或者如果您不确定是否存在FirstOrDefault
。