返回Linq查询中的附加列吗?

问题描述:

我有这样的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

这可能会帮助您:

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。 –

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