C# 在Linq中选择不同的列名
我的表包含多个列,我需要使用Linq在两个特定列中选择不同的行 我的SQL等价物是:C# 在Linq中选择不同的列名,c#,linq,C#,Linq,我的表包含多个列,我需要使用Linq在两个特定列中选择不同的行 我的SQL等价物是: Select distinct Level1Id, Level1Name from levels 我现在做的是: db.levels.GroupBy(c=> c.Level1Id).Select(s => s.First()) 这将检索整行,而不仅仅是Level1Id和Level1Name。如何在此linq查询中指定要检索的列?使用Select,可以在匿名对象中指定列,然后在该对象上使用Dist
Select distinct Level1Id, Level1Name
from levels
我现在做的是:
db.levels.GroupBy(c=> c.Level1Id).Select(s => s.First())
这将检索整行,而不仅仅是Level1Id和Level1Name。如何在此linq查询中指定要检索的列?使用Select,可以在匿名对象中指定列,然后在该对象上使用Distinct:
db.levels.Select(l => new{ l.Level1Id, l.Level1Name }).Distinct();
使用Select,可以指定匿名对象中的列,然后在该对象上使用Distinct:
db.levels.Select(l => new{ l.Level1Id, l.Level1Name }).Distinct();
试一试
db.levels.Selectc=>new{c.Level1Id,c.Level1Name}.Distinct 试试看
db.levels.Selectc=>new{c.Level1Id,c.Level1Name}.Distinct 指定LINQ查询中的两列,选择并创建具有Level1Id和Level1Name属性的匿名对象:
var query = (from v in db.levels
select new { Level1Id = v.Level1Id, Level1Name = v.Level1Name }).Distinct();
并使用以下各项:
foreach (var r in query){
int valId = r.LevelId;
int level = r.Level1Name;
//do something
}
指定LINQ查询中的两列,选择并创建具有Level1Id和Level1Name属性的匿名对象:
var query = (from v in db.levels
select new { Level1Id = v.Level1Id, Level1Name = v.Level1Name }).Distinct();
并使用以下各项:
foreach (var r in query){
int valId = r.LevelId;
int level = r.Level1Name;
//do something
}
你离得太近了,还有一步:
var result = db.levels.GroupBy(c=> new { c.Level1Id, c.Level1Name })
.Select(s => s.First())
关键是:匿名类型使用结构比较,这就是为什么GroupBy或任何其他答案都有效的原因。您非常接近,还有一步:
var result = db.levels.GroupBy(c=> new { c.Level1Id, c.Level1Name })
.Select(s => s.First())
关键是:匿名类型使用结构比较,这就是为什么GroupBy或任何其他答案都有效。现在,对于下面的答案,我想使用变量c还是l:现在,对于下面的答案,我想使用变量c还是l: