C# linq到sql不同值或分组依据

C# linq到sql不同值或分组依据,c#,sql,linq,asp.net-mvc-4,linq-to-sql,C#,Sql,Linq,Asp.net Mvc 4,Linq To Sql,我有以下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 =

我有以下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 };

我认为你的查询中缺少信息。 如果希望在其他属性上使用第一个值,则需要告诉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 };

您希望其他属性的值是什么?每个CityFoo的第一个值?是的,每个CityFoo的第一个值我认为您需要添加更多关于您实际需要的详细信息,因为实施
分组依据
不同的
选择将对您的结果产生影响(即,您希望结果如何更改),您可能会发现关于分组(尽管您必须确定哪些聚合是合适的)或选择不同记录的有用信息。