我是linq to sql的新手,只是想了解我能用linq处理什么类型的查询。
这是我的数据库方案,
我希望得到特定用户的所有客户,这就是我所做的,
var userId = 4;
var companies = from c in db.Company
where c.UserId == userId
select c.Id;
var costumers = from c in db.Customers
where companies.Contains(c.CompanyId)
select c;
我只是想知道这是否是一个很好的方法,是否有更好的方法来处理这类查询?
答案 0 :(得分:0)
Contains相当于SQL中的IN,您的Linq语句将被转换为SQL语句。所以我无法真正看到另一种能让你在Linq上获得更好性能的方法。如果您想使用更少的代码,您可以尝试以下代码:
var companies = db.Companies.Where(x=> x.UserId == userid).Select(x=>x.Id);
var customers = db.Customers.Where(x=> companies.Contains(x.CompanyId));
答案 1 :(得分:0)
使用也可以通过这种方式获得客户:
var result = db.Customers.Join(
db.Company, customer => customer.CompanyId, comp => comp.Id, (customer, comp)
=> new { customer, comp }).Where(@t => @t.comp.UserId == 4)
.Select(@t => @t.customer);
答案 2 :(得分:0)
你也可以像这样保持简单。
select * from db.Customers Cus
inner join db.company Com on Com.Id = Cus.CompanyId
where Com.UserId= userId