2012-01-29 26 views
43

क्या एंटिटी फ्रेमवर्क 4 का उपयोग कर एकल कॉलम की पूरी सामग्री प्राप्त करने का कोई तरीका है? एक ही इस एसक्यूएल क्वेरी की तरह:इकाई फ्रेमवर्क के साथ एक कॉलम का चयन कैसे करें?

SELECT Name FROM MyTable WHERE UserId = 1; 

उत्तर

87

आप ऐसा करने के लिए LINQ के .Select() का उपयोग कर सकते हैं। आपके मामले में यह कुछ इस तरह जाना होगा:

yourDbContext.MyTable.Where(u => u.UserId == 1).Select(u => u.Name); 
+1

हाय, मुझे त्रुटि मिली है 'सिस्टम को स्पष्ट रूप से रूपांतरित नहीं कर सकता' System.Linq.IQueryable 'to' string'' 'db.Offices.Where (o => o.Offic eId == emp.OfficeId)। चयन करें (o => o.DepartmentId) 'कोई विचार? – guitarlass

+16

@guitarlass यदि आप अपनी क्वेरी से एक परिणाम प्राप्त करना चाहते हैं तो आपको कुछ ऐसा करने की आवश्यकता होगी: 'string s = db.Offices.Where (o => o.OfficeId == emp.OfficeId)। चयन करें (ओ => ओ। डिपार्टमेंट आईडी)। फर्स्टऑर्डफॉल्ट() ' –

2

आप LINQ select खंड का उपयोग करें और संपत्ति है कि आपके नाम स्तंभ से संबंधित संदर्भ सकता है।

4

LINQ आपकी क्वेरी का उपयोग करते हुए कुछ इस तरह दिखना चाहिए:

public User GetUser(int userID){ 

return 
(
from p in "MyTable" //(Your Entity Model) 
where p.UserID == userID 
select p.Name 
).SingleOrDefault(); 

} 
बेशक

यह आप में एक ADO.Net इकाई मॉडल की आवश्यकता करने के लिए अपने उपाय।

3

मैं इकाई पर एक पूरा noob हूँ लेकिन इस

var name = yourDbContext.MyTable.Find(1).Name; 

कैसे मैं सिद्धांत रूप में यह करना होगा है ... अगर यह एक प्राथमिक कुंजी है।

- या -

var name = yourDbContext.MyTable.SingleOrDefault(mytable => mytable.UserId == 1).Name; 

- या -

पूरे स्तंभ के लिए:

var names = yourDbContext.MyTable 
.Where(mytable => mytable.UserId == 1) 
.Select(column => column.Name); //You can '.ToList();' this.... 

लेकिन "ओह गीज़ रिक, मुझे क्या मालूम ..."

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