2016-08-05 184 views
0
var result = (from u in ctx.Users 
       where u.UserId.Equals(id) 
       select new 
       { 
        FullName = u.LName + ", " + u.FName 
       }).ToString(); 

我也試過Linq查詢連接兩個領域

var result = ctx.Users.Where(u => (u.UserId.Equals(id))) 
         .Select(u => new {FullName=u.LName + ", " + u.FName}) 
         .ToString(); 

但都返回SQL SELECT語句,而不是全名。任何人都可以請幫忙?

+0

那'ToString'是錯這裏的原因,那是你的查詢返回'IEnumerable' - 項目的集合。對此調用ToString是不好的。 – Jonesopolis

+1

@Jonesopolis更具體地說,它返回一個'IQueryable',因此OP得到一個SQL查詢的原因就是結果。 – juharr

回答

9

你是不是在執行查詢使用。要執行查詢,需要調用一個特殊的方法類似ToList()First()Single()FirstOrDefault()等..

你在做什麼只是創建查詢。 ToString只會給你這種查詢的代表。

下面是一個使用First()執行查詢的一個例子:

var result = 
    ctx.Users 
     .Where(u => u.UserId.Equals(id)) 
     .Select(u => u.LName + ", " + u.FName) 
     .First(); 

我使用First,因爲我認爲你是選擇一個特定的用戶。

或者您的原始代碼:

var result = (from u in ctx.Users 
         where u.UserId.Equals(id) 
         select new 
         { 
          FullName = u.LName + ", " + u.FName 
         }).First(); 
+0

請注意,您可能需要警惕用戶可能不在那裏的情況,在這種情況下,FirstOrDefault更可取。 –

+0

你有沒有通過'id'的用戶? –

+1

您可以使用'FirstOrDefault'。如果找不到具有指定條件的用戶,那會給你'null'。 –

1

toString()

var result = (from u in ctx.Users 
          where u.UserId.Equals(id) 
          select new 
          { 
           FullName = u.LName + ", " + u.FName 
          }).FirstOrDefault(); 
+1

這個答案仍然留給他未執行的查詢。 –

+0

那什麼都不做 – ElenaDBA

+0

我已經更新了我的答案,包括excution –