2011-05-27 65 views
1

我必須使用此查詢獲取前20行,而類似子句不起作用。任何人都可以告訴我爲什麼/幫我找到解決方案?實體框架中的查詢

var zipcodes = (from results in db1.ZipCodes1 
           where results.CityType == "D" && results.ZIPCode like '%ZC %' 
           select new Ajaxresults 
       { 
        ZIPCode= results.ZIPCode, 
        CityName = results.CityName, 
        StateAbbr = results.StateAbbr, 
        StateName = results.StateName 
       }).GroupBy(o => o.ZIPCode); 
+3

使用'results.ZIPCode.Contains( 「ZC」)'代替喜歡。 – aligray 2011-05-27 05:15:09

+0

我必須在上述查詢中選擇前20行 – iProgrammer 2011-05-27 05:18:42

+0

@aligray將您的答案放在'您的答案'框中,而不是作爲註釋。 – 2011-05-27 05:19:55

回答

4

要選擇前20行,你應該使用LINQ Take操作

var zipcodes = (from results in db1.ZipCodes1 
    ... 
    ).Take(20); 
4

代碼應該是這樣的:

var zipcodes = (from results in db1.ZipCodes1 
       where results.CityType == "D" && results.ZIPCode.Contains("ZC ") 
       select new Ajaxresults 
       { 
        ZIPCode= results.ZIPCode, 
        CityName = results.CityName, 
        StateAbbr = results.StateAbbr, 
        StateName = results.StateName 
       }).GroupBy(o => o.ZIPCode).Take(20); 
+0

我必須根據此結果製作視圖模型如何在視圖模型類中創建此 – iProgrammer 2011-05-27 05:28:34

+0

,創建一個類型爲IEnumerable的Zipcodes屬性。 – 2011-05-27 05:35:34

1

的String.Contains方法將被轉換爲相應的SQL LIKE操作。你可以查詢更改爲類似的東西:

var zipcodes = (from results in db1.ZipCodes1 
          where results.CityType == "D" 
           && results.ZIPCode.Contains("ZC ") 
          select new Ajaxresults 
      { 
       ZIPCode= results.ZIPCode, 
       CityName = results.CityName, 
       StateAbbr = results.StateAbbr, 
       StateName = results.StateName 
      }).GroupBy(o => o.ZIPCode);