簡體   English   中英

Linq to Sql-如何從二級表獲取數據

[英]Linq to Sql - How to get data from second level table

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

我只是想知道這是否是一種不錯的方法,還有沒有更好的方法來處理這種類型的查詢?

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));

使用也可以通過這種方式吸引客戶:

  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);

您也可以像這樣簡單。

 select * from db.Customers Cus
 inner join db.company Com on Com.Id = Cus.CompanyId
 where Com.UserId= userId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM