2011-01-26 6 views
6

मेरे पास यह क्वेरी है जो काम करती है लेकिन जब मैं LINQ में समकक्ष लिखने की कोशिश करता हूं तो मुझे गलत SQL उत्पन्न होता है।LINQ में SQL क्वेरी द्वारा एक चयन गिनती समूह कैसे लिखें?

मेरे प्रश्न है:

tableName.GroupBy(x => x.ColumnId).Count() 

लेकिन LINQPad में देख यह एसक्यूएल उत्पादन:

SELECT COUNT(*) AS [value] 
FROM (
SELECT NULL AS [EMPTY] 
FROM [tableName] AS [t0] 
GROUP BY [t0].[ColumnId] 
) AS [t1] 

मैं क्या कर रहा हूँ

SELECT COUNT(*) 
FROM tableName 
GROUP BY ColumnId 

मैं के रूप में यह लिख कोशिश की है गलत कर रहे हो धन्यवाद!

उत्तर

18

आपकी LINQ क्वेरी समूह की संख्या की गणना कर रही है लेकिन आपकी SQL क्वेरी समूह द्वारा गणना का उत्पादन कर रही है। आप समूह द्वारा गणना प्राप्त करने के लिए

var counts = tableName.GroupBy(x => x.ColumnId) 
         .Select(g => new { g.Key, Count = g.Count() }); 

चाहते हैं।

ध्यान दें कि अगर आप ठीक उसी एसक्यूएल चाहते आप चाहते हैं

var counts = tableName.GroupBy(x => x.ColumnId) 
         .Select(g => g.Count()); 

के रूप में यह प्रत्येक समूह के आईडी के साथ-साथ देता है ऊपर पहला उदाहरण एक छोटे से अधिक उपयोगी होना चाहिए।

0

tableName.GroupBy(x => x.ColumnId).Select(x => x.Count())

आज़माएं
संबंधित मुद्दे