Linq扩展查询

时间:2014-11-18 11:21:15

标签: c# linq

我有以下型号:

Party:
 PartyID
 Partyname

Entitlement:
 EntitlementID
 PartyID
 ClaimValueID

ClaimValue:
 ClaimValueID
 ClaimValue

UserEntitlement:
 UserID
 EntitlementID

User:
 UserID
 UserName

Partys被分配了权利。权利可以授予用户。

授予一方的权利之一的权利要求为"管理员"

我需要找到所有以特定用户为管理员的用户。

例如。

用户拥有3个用户: 鲍勃,特里和六月

鲍勃拥有"管理员" #1; party 1"的权利;和"派对2"

Terry持有"用户" #1; party 1"的权利;和#34;派对3"

June持有"第3方"

的"用户权利

我希望最终的收藏只能容纳Bob和Terry。

我尝试了许多不同的Linq扩展查询,但我不确定我是否完全理解我的选择,包括等等。

我尝试了以下内容,以及我不再拥有的许多其他组合。

var usersA = db.UserEntitlements.Where(a => a.Entitlement.ClaimValue.Value == "Administrator" && a.UserID == 1)
   .Select(b => b.Entitlement.Party)
   .SelectMany(a => a.Entitlements)
   .Include(b => b.UserEntitlements)
   .SelectMany(a => a.UserEntitlements)
   .Include(b => b.User);

实现这一目标的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

当你有图形时,实体框架在第一个多对多关系处停止,否则它将返回完整的DB。你需要在两个查询中拆分它。