C# 如何进行多级查询
我正在制作一个简单的律师应用程序来计算代理佣金 我们有两类代理人C# 如何进行多级查询,c#,asp.net-mvc,C#,Asp.net Mvc,我正在制作一个简单的律师应用程序来计算代理佣金 我们有两类代理人 第一代理人-为律师事务所带来新客户的人 第二个代理-谁也带来代理并获得佣金 我正在使用asp.net identity,这是创建此关系的最佳实践,可以将类型为Application user的名为Parent的字段添加为Application user类中的集合 public virtual ICollection<ApplicationUser> Parent { get; set; } 我希望将上面的查询绕过代理
public virtual ICollection<ApplicationUser> Parent { get; set; }
我希望将上面的查询绕过代理作为父项查询到新查询,然后我可以获取子项的列表如果您希望所有用户都具有相同的父项,请尝试:
var usersWithParent = _context.Users.Where(u => u.Parents.Any(p => p.Id == myParentId)).ToList();
另外,请参阅我关于立即加载所有收藏的评论。在您的第一段中有许多不相关的信息。请重新编写并仅共享重要信息。请出示您的实体代码-仅重要部分-并用一两句话解释您想要的关系。强制复制和粘贴:您好,欢迎!请阅读并阅读以改进您的问题,并帮助我们了解您的问题。您是否在用户上有parentId字段?这将有助于将关系存储在数据库中。如果是,请尝试->var child=\u context.Users.Where(u=>u.ParentId==Id);不,我还没有创建PrentID和EF generate表,表中的字段如上所示,我想我不能在用户中添加ParentID,因为父类型是用户的集合,而不是用户的集合,这是要加载很多单独的数据库点击。您应该使用
Include()
一步完成。有lambda语法,或者您可以尝试var userWithClientsParents=\u context.Users.Include(u=>u.Parents).Include(“Clients.Cases.casepharges”).Single(c=>c.Id==Id)
。
public ActionResult ViewAgent(string Id)
{
//Get selected agent with related data
var Agent = _context.Users.Single(c => c.Id == Id);
_context.Entry(user).Collection(u => u.Clients).Load();
_context.Entry(user).Collection(u => u.Parent).Load();
foreach (var item in user.Clients)
{
_context.Entry(item).Collection(c => c.Case).Load();
foreach (var charge in item.Case)
{
_context.Entry(charge).Collection(c => c.CaseCharge).Load();
}
}
//select agent Child's of agent with related data
// How can i query it ?? an error here but i am looking around
var childs= _context.Users.Where(u=>u.Parent.Select(p=>p.Id==Id))
return View(user);
}
var usersWithParent = _context.Users.Where(u => u.Parents.Any(p => p.Id == myParentId)).ToList();