none
SQL 轉 LINQ 提問 RRS feed

  • 問題

    • 作業系統版本-Windows 7

      開發工具版本-Visual Studio 2012

      開發環境-Windows Form

      SQL 指令 ..  

      SELECT          COUNT(*) AS co, MAX(hkid) AS id
      FROM              Data
      WHERE          (sb1 = '41' OR
                            sb2 = '41' OR
                            sb3 = '41' OR
                            sb4 = '41' OR
                            sb5 = '41' OR
                            sb6 = '41' OR
                            (spb = '41') AND (hkid < 1545)

      LINQ .........

    • var Query = from l in LotteryData
      where (l.Sb1 =="41" || l.Sb2 =="41" || l.Sb3 =="41" || l.Sb4 =="41" || l.Sb5=="41" || l.Sb6=="41" || l.Spb=="41") && l.Hkid < 1545
      group l by l.Hkid into g
      select new 
      { id = g.Max(p =>p.Hkid),
        co = g.Count()
      }

    我想要符合條件的總筆數及ID 最大值,  但用寫成LINQ 時,無法像SQL指令回覆我的值..

    請問我在LINQ那裡寫錯了...

    麻煩各位先進,謝謝



    2013年2月20日 上午 05:17

解答

  • 自己回答

    var Query = from p in hkdata
                                where
                                   (
                                   p.Sb1 == SortSB[i] ||
                                   p.Sb2 == SortSB[i] ||
                                   p.Sb3 == SortSB[i] ||
                                   p.Sb4 == SortSB[i] ||
                                   p.Sb5 == SortSB[i] ||
                                   p.Sb6 == SortSB[i] ||
                                   p.Spb == SortSB[i]
                                   ) &&
                                   p.Hkid < DrawID
                                group p by 0 into g
                                select new
                                {
                                    id = g.Max(p => p.Hkid),
                                    co = g.Count()
                                };

    • 已標示為解答 duke_topmost 2013年2月20日 上午 07:42
    2013年2月20日 上午 07:29

所有回覆

  • 自己回答

    var Query = from p in hkdata
                                where
                                   (
                                   p.Sb1 == SortSB[i] ||
                                   p.Sb2 == SortSB[i] ||
                                   p.Sb3 == SortSB[i] ||
                                   p.Sb4 == SortSB[i] ||
                                   p.Sb5 == SortSB[i] ||
                                   p.Sb6 == SortSB[i] ||
                                   p.Spb == SortSB[i]
                                   ) &&
                                   p.Hkid < DrawID
                                group p by 0 into g
                                select new
                                {
                                    id = g.Max(p => p.Hkid),
                                    co = g.Count()
                                };

    • 已標示為解答 duke_topmost 2013年2月20日 上午 07:42
    2013年2月20日 上午 07:29
  • 另一個方法,在原有的TABLE多一個欄位, 在 group p by p.XXX into g 

    不過我這是將所有的數据都加載在記憶體裡才需用到LINQ 

    2013年2月20日 上午 07:53