2013-11-21 49 views
1

我有一個lambda表達式,它返回我正在尋找的記錄,除了名稱不明確,所以我需要按名稱分組,這裏是我有,有人可以幫我一個這個。Lambda表達式與where子句,如何做一個組

var cities = _context.country.OrderBy(c => c.Name) 
      .Where(c => c.Feature_Code != featureCode 
       && c.Feature_Code != featureCode2 
       && c.Country_Code == CountryCode 
       && c.Admin1_code == StateId) 
      .Select(c => new CityViewModel 
      { 
       CityId = c.CountryID, 
       CityName = c.Name 
      } 
     ).AsQueryable(); 
+0

我還沒有找到解決方案,但是,開始認爲我可能不得不求助於一個SQL過程,並從我的控制器調用它。這似乎是一個簡單的例行要求,但到目前爲止,沒有任何答覆能奏效。 – user1118241

回答

-1

你可以使用:

var cities = _context.country.Distinct(c => c.Name).Where(c => c.Feature_Code != featureCode 
      && c.Feature_Code != featureCode2 
      && c.Country_Code == CountryCode 
      && c.Admin1_code == StateId) 
     .Select(c => new CityViewModel 
     { 
      CityId = c.CountryID, 
      CityName = c.Name 
     } 

這應該只返回一個每個名字的實例。

+0

我已經嘗試了各種方法,沒有骰子,這是行不通的。 – user1118241

0

取決於你想要什麼,你可以添加:

.GroupBy(c => c.CityName) 
+0

這也不起作用。在類型轉換時引發錯誤。 – user1118241

+0

這對我來說是最合乎邏輯的解決方案,但它不起作用。 – user1118241

1

你可以使用:

var cities = _context.country 
        .Where(c => /*Your where conditions*/) 
        .GroupBy(c => c.Name) 
        .OrderBy(grp => grp.Key) 
        .Select(grp => new CityViewModel 
        { 
         CityId = grp.First().CountryID, 
         CityName = grp.Key 
        }); 

排序依據後,應該在哪裏使用。

+0

本示例在'where子句'錯誤中拋出未知列'Distinct1.Name',但感謝您的建議。 – user1118241

+0

另外OrderBy的位置我真的不認爲它可能與OrderBy結合使用時很重要,但它工作正常,但我仍然收到上述錯誤。 – user1118241