LINQ

2012-02-15 8 views
5

कृपया मदद मुझे एक लैम्ब्डा अभिव्यक्ति में कनवर्ट करLINQ

SELECT [UserID], MAX(Created) Created 
FROM [UserHistory] 
WHERE userid IN (14287) 
GROUP BY [UserID] 

धन्यवाद!

संपादित करें: यहां तक ​​कि मेरे पास अब तक है।

List<T> list; //list is populated 

table.Where(x => list.Select(y => y.ClientId).Contains(x.UserID)) 
        .GroupBy(x => x.UserID) 
        .Select(x => new { x.UserID, x.Created }) 
        .ToList(); 

जब मैं GroupBy जोड़ने के लिए, मेरी चुनें वहाँ x.UserID और x.Created के लिए कोई परिभाषा कहते हैं।

+3

आप किस पर फंस गए हैं? – Krizz

+0

जब मैं समूह को जोड़ता हूं, तो मेरे चयन ब्रेक। क्या समूह अन्य सभी क्षेत्रों या कुछ को खत्म कर देता है? – Kukoy

+1

याद रखें, 'समूह द्वारा' के बाद आपके पास 'मूल नहीं है > 'आपके मूल' IENumerable 'के बजाय। नीचे दिए गए लोग आपको तथ्य के व्यावहारिक उदाहरण दिखाते हैं। – Krizz

उत्तर

11

ये रहा:

var userIDs = new[] {14287, }; 

var results = 
dataContext.UserHistories 
.Where(user => userIDs.Contains(user.userID)) 
.GroupBy(user => user.userID) 
.Select(
    userGroup => 
     new 
     { 
      UserID = userGroup.Key, 
      Created = userGroup.Max(user => user.Created), 
     }); 
+0

परफेक्ट, धन्यवाद के लिए पूछा गया। – Kukoy

0
var query = from history in context.UserHistories 
       where (new[] {14287}).Contains(history.userID) 
       group history by history.UserID into g 
      select new 
      { 
       UserId = g.Key, 
       MaxCreated = g.Max(x => x.Created) 
      }; 
+0

आपने 'WHERE उपयोगकर्ता आईडी (14287)' वाक्यांश को याद किया है। – Krizz

+0

दाएं। नोट के लिए धन्यवाद। – Meligy

+0

मूल पोस्ट लैम्ब्डा – jgerman

0

अपने संपादित के बारे में, के रूप में मैं टिप्पणी में कहा, .Select(x => new { x.UserID, x.Created }) में, xनहीं रह गया है एक UserHistory है, यह IGrouping<int, UserHistory> (1) है, जो ऐसा नहीं करता है UserID और Created गुण हैं, लेकिन केवल Key संपत्ति, जो एक उपयोगकर्ता आईडी है और IEnumerable लागू करती है ताकि दिए गए कुंजी (उपयोगकर्ता आईडी) के लिए सभी आइटमों का आकलन किया जा सके।

@ डेवशॉ स्निपेट का उपयोग करें क्योंकि यह सबसे सही और सबसे कुशल है।

(1) मुझे लगता है कि UserIDint है।

संबंधित मुद्दे