我有以下的linq查询 如何修改查询以仅返回CityFoo属性的不同值?
var query = from f in db.Foos
join b in db.Bars on f.IDFoo equals b.IDFoo
join fb in db.Fubars on b.IDBar equals fb.IDBar
select new MyViewModel {
IDFoo = f.IDFoo,
NameFoo = f.NameFoo,
CityFoo = f.CityFoo,
NameBar = b.NameBar,
NameFubar = fb.NameFubar };
答案 0 :(得分:0)
我认为您缺少有关查询的信息。 如果您希望在其他属性上使用第一个值,则需要告知Linq
所以我猜你实际上想要分组然后拿第一个。
或......这样的事情:
var query = from f in db.Foos
join b in db.Bars on f.IDFoo equals b.IDFoo
join fb in db.Fubars on b.IDBar equals fb.IDBar
group new { f, b, fb } by f.CityFoo into grp
let first = grp.FirstOrDefault()
select new MyViewModel {
IDFoo = first.f.IDFoo,
NameFoo = first.f.NameFoo,
CityFoo = grp.Key,
NameBar = first.b.NameBar,
NameFubar = first.fb.NameFubar };