2012-10-01 30 views
0

我有一個LINQ查詢聯接兩個表(在實際的數據庫沒有關係)獲得加入的第一行

的關係是: 公司1 - N的電話

var miniCompanies = 
    (from companies in db.Companies 
    join phones in db.Phones on companies.Id equals phones.CompanyId 
    select new 
    { 
     companies.Name, 
     phones.Phone, 
    }).ToList().Distinct(); 

這將返回類似:

---------------------------- 
company1  | 12345 | 
---------------------------- 
company1  | 23456 | 
---------------------------- 
company2  | 43242 | 
---------------------------- 
company2  | 34234 | 
---------------------------- 
company2  | 65442 | 
---------------------------- 

我需要得到僅最前一頁在電話表不是一切 該怎麼做?
編輯:也許我不清楚有什麼想抱歉的。
i ment:
----------------------------
company1 | 12345 |
----------------------------
company2 | 43242 |
----------------------------

我想第一個電話每家公司

+1

如果你有你的DBML的關係,你可能只是這樣做:'VAR miniCompanies = db.Companies.Select(C =>新{c.Name,C .Phones.First()。Phone});' – cjk

+0

這不是真正的公司2的第一個電話。我假定你是指任何電話。 –

+0

不,這是一個打字錯誤,我會修復它 – Star

回答

2

可以使用的GroupBy:

var miniCompanies = 
(from companies in db.Companies 
join phones in db.Phones on companies.Id equals phones.CompanyId 
select new 
{ 
    companies.Name, 
    phones.Phone, 
}).GroupBy(c=>c.Name).Select(c=>c.FirstOrDefault()).ToArray(); 
-1

1你可以試試與First operator

(from companies in db.Companies 
join phones in db.Phones on companies.Id equals phones.CompanyId 
select new 
{ 
    phones.Phone, 
}).First(); 

鏈接:http://msdn.microsoft.com/fr-fr/library/vstudio/system.linq.queryable.first.aspx

2您還可以使用FirstOrDefault

鏈接:http://msdn.microsoft.com/fr-fr/library/vstudio/system.linq.queryable.firstordefault.aspx

3,您還可以使用Take(1);

鏈接:http://msdn.microsoft.com/fr-fr/library/vstudio/bb300906.aspx

+0

ToList()和Distinct()看起來有點浪費。 –

+0

這隻返回第一家公司和電話,而不是每個公司的第一個電話 – cjk

+0

爲什麼downvote ??? –

-2

我會用以下內容:

var miniCompanies = 
(from companies in db.Companies 
join phones in db.Phones on companies.Id equals phones.CompanyId 
select new 
{ 
    companies.Name, 
    phones.Phone, 
}).ToList().Distinct().FirstOrDefault(); 

的「FirstOrDefault()方法返回集合中的第一項。如果集合不包含元素,則將返回默認對象。對於可爲空的類型,這將是一個'null'對象。這是防止應用程序因與空集合相關的異常而失敗的好方法。

+0

這隻會返回第一家公司和電話,而不是每個公司的第一個電話 – cjk