0

我是 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;

我只是想知道这是否是一种不错的方法,是否有更好的方法来处理此类查询?

4

3 回答 3

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));
于 2013-09-20T10:53:29.767 回答
0

你也可以像这样保持简单。

 select * from db.Customers Cus
 inner join db.company Com on Com.Id = Cus.CompanyId
 where Com.UserId= userId
于 2013-09-20T11:12:43.373 回答
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);
于 2013-09-20T11:00:27.773 回答