2009-04-15 16 views
12

मैं लिंक से एसक्यूएल के लिए बिल्कुल नया हूं लेकिन एक सरल सरल एसक्यूएल क्वेरी होना चाहिए और यह पता नहीं लगा सकता कि इसे LINQ में कैसे अच्छा खेलना है।लिंक से एसक्यूएल और

SELECT  Users.Id, Users.Id AS Expr1, Users.FirstName, Users.LastName, 
User_x_Territory.UserID 
FROM   Users LEFT OUTER JOIN 
      User_x_Territory ON User_x_Territory.UserID = Users.Id 
GROUP BY Users.Id, Users.Id, Users.FirstName, Users.LastName, User_x_Territory.UserID 
HAVING  (COUNT(User_x_Territory.UserID) = 0) 

बस सभी उपयोगकर्ताओं एक क्षेत्र सौंपा, अगर वे एक क्षेत्र user_x_territory gerrund जाँच करने के लिए है यह बताने के लिए एक ही रास्ता नहीं है कि प्राप्त करने की कोशिश।

मैं इस के साथ मेरी डीबी से बाहर सभी उपयोगकर्ताओं के प्राप्त करने में सक्षम हूँ:

var users = from u in db.Users 
      join uXt in db.User_x_Territories on u equals uXt.User into gerr 
      from users in gerr.DefaultIfEmpty() 
      select users; 

लेकिन वहाँ से मैं कैसे/के लिए खोज परिणामों को परिष्कृत करने के होने से एक समूह जोड़ने के लिए को समझ नहीं सकता केवल उपयोगकर्ताओं को कोई क्षेत्र नहीं दिखाएं।

किसी भी मदद के लिए धन्यवाद।

उत्तर

13

मैं निम्नलिखित समाधान सुझाव देते हैं।

db.Users.Where(u => u.User_x_Territories.Count == 0) 
+0

बहुत बढ़िया! धन्यवाद एक बहुत है, मैं तुम्हें LINQ के साथ कर सकता है कि पता नहीं था। – Chelsea

+0

* rofl * मुझे आपके उत्तर से अधिक पसंद है! +1 –

+1

LINQ सबकुछ कर सकता है ...: डी –

1

मैं नहीं जानता कि यह कैसे कुशल है (मैं नहीं बहुत अनुमान लगा रहा हूँ), लेकिन आप कुछ इस तरह की कोशिश कर सकते:

var users = (from u in db.Users 
      join uXt in db.User_x_Territories on u equals uXt.User into gerr 
      from users in gerr.DefaultIfEmpty() 
      select u).Where(u => u.User_x_Territories.Count == 0); 
1

संपादित करें: हे अंदाजा लगाना कोई मुझे यह करने के लिए हरा :(

 
from t in db.Users 
join t0 in db.User_x_Territory on new { UserID = t.Id } equals new { UserID = t0.UserID } into t0_join 
from t0 in t0_join.DefaultIfEmpty() 
group new {t, t0} by new { 
    t.Id, 
    Column1 = t.Id, 
    t.FirstName, 
    t.LastName, 
    t0.UserID 
} into g 
where g.Count() == 0 
select new { 
    Id = g.Key.Id, 
    Expr1 = g.Key.Id, 
    g.Key.FirstName, 
    g.Key.LastName, 
    UserID = g.Key.UserID 
} 
संबंधित मुद्दे