Jun*_*son -1 c# linq entity-framework-6
如果我有一个Company对象:
var companies = db.Companies.Where(...);
Run Code Online (Sandbox Code Playgroud)
和一个User与Company对象相关的对象one-to-many:
var users = db.Users.Where(...);
Run Code Online (Sandbox Code Playgroud)
我怎样才能达到像这样的标准 select * from users where user.company in (company)
从一些文章中读到,我尝试过类似的东西:
users.Where(x => companies.Contains(x.company))
Run Code Online (Sandbox Code Playgroud)
但似乎不起作用.我错过了什么?
编辑
确切答案:
public PartialViewResult IndexGrid(String search)
{
var companies = db.Users.Find(User.Identity.GetUserId()).Companies.AsQueryable();
Guid[] guids = companies.Select(c => c.Id).ToArray();
if (String.IsNullOrEmpty(search))
return PartialView("_IndexGrid", db.Set<Quotation>().OrderByDescending(x => x.Code).AsQueryable()
.Where(x => guids.Contains(x.Company.Id)));
else
return PartialView("_IndexGrid", db.Set<Quotation>().OrderByDescending(x => x.Code).AsQueryable()
.Where(x => guids.Contains(x.Company.Id))
.Where(x => x.Code.Contains(search)|| x.MasterCustomer.Name.Contains(search)));
}
Run Code Online (Sandbox Code Playgroud)
小智 5
当您使用最后一个变体时
users.Where(x => companies.Contains(x.company))
Run Code Online (Sandbox Code Playgroud)
.Net不知道如何比较公司并使用对同等对象的引用.如果贵公司有id属性,请试试这个.如果没有,请告诉我.
users.Where(x => companies.Select(c => c.Id).Contains(x.company.Id))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77 次 |
| 最近记录: |