2017-06-15 64 views
0

我有這樣的Linq查詢:返回Linq查詢中的附加列嗎?

var area = db.MyDbSet 
    .Where(s => s.langid == langid) 
    .GroupBy(s => s.Title) 
    .Select(g => new { Title = g.Key }) 
    .Select(s => s.Title); 

我想從同一個表中返回另一列,其名爲:CodeId

我是noob Linq程序員,並且在C#中所有這些混雜的東西中都迷失了方向,所以我無法真正理解我該怎麼做。

有人可以幫助我如何從相同的查詢調用返回同一個表中的另一列嗎?

+0

就在這樣的查詢添加列:'。選擇(G =>新{標題= g.Key,代碼ID = g.propertyName}) ' – OmG

回答

3

這可能會幫助您:

var area = db.MyDbSet 
        .Where(s => s.langid == langid) 
        .GroupBy(s => s.Title) 
        .Select(g => new { Title = g.Key, CodeId = g.FirstOrDefault().CodeId }); 
+0

FirstOrDefault會做什麼?只取一個值?但是當我鍵入s.CodeId時,我在下一行看不到CodeId。它在當前的情況下不存在。 – Vlad

+1

這裏查詢將按標題分組數據,groupby之後將返回該組的第一個CodeId。 –

0
var area = db.MyDbSet 
    .Where(s => s.langid == langid) 
    .GroupBy(s => s.Title) 
    .Select(g => new { 
     Title = g.Key, 
     CodeId = g.Id, 
     OtherField = "Field" 
    }) 
+0

原來我的模型有問題,所以g.CodeId不可見。 – Vlad

+0

我在這個表中有兩個鍵,langid和CodeId,所以它們被標記爲[Key,Column(Order = 0)]和[Key,Column(Order = 1)]應該在查詢中做一些額外的事情,在我的模型中? – Vlad