2012-01-17 60 views
1

我創建了以下函數來獲取FirstName和LastName,並將它們放入字符串FullName中。檢索2個值並通過一次調用插入到字符串中

我的linq語句看起來有點有趣,因爲我在同一行上執行2個查詢以獲取我需要的信息。

有沒有更好的編碼方式?

public static string getMemberFullNamebyID(int memID) 
{ 
    using (var ctx = new GPEntities()) 
    { 
     string fname = string.Empty; 
     string lname = string.Empty; 

     fname = ctx.Members.Where(g => g.memID == memID).Select(g => g.memFirstName).FirstOrDefault(); 
     lname = ctx.Members.Where(g => g.memID == memID).Select(g => g.memLastName).FirstOrDefault(); 

     return (lname + ", " + lname).ToString(); 
    } 
} 

回答

4

如何:

ctx.Members.Where(g => g.memID == memID) 
    .Select(g => g.memFirstName + ", " + g.memLastName).FirstOrDefault() 
1

如果需要單獨存儲值,使用匿名類型,例如:

var ret = ctx.Members.Where(g => g.memID == memID) 
    .Select(g => new { First = g.memFirstName, Last = g.memLastName}).FirstOrDefault(); 

訪問匿名類型:

List<string> list = new List<string>(); 
list.Add("WoLfulus"); 
list.Add("David"); 

var sel = list.Select(i => new { 
    Normal = i, 
    Lower = i.ToLower(), 
    Upper = i.ToUpper() 
}); 

訪問返回的數據:

foreach (var str in sel) 
{ 
    Debug.WriteLine(str.Normal + ", " + str.Lower + ", " + str.Upper); 
} 

輸出:

WoLfulus, wolfulus, WOLFULUS 
David, david, DAVID 

如果沒有,用什麼AdaTheDev說。

+0

你將如何訪問匿名類型?我正在使用 ---------- memFullName = ctx.Members.Where(g => g.memID == memID).Select(g => g.memLastName +「,」+ g.memFirstName ).FirstOrDefault() ---- – 2012-01-17 21:27:18

+0

正如@WoLfulus在上面用「var」所寫的那樣。如果您需要結果之外的結果,您也可以創建一個Tuple或一個自定義類型的實例。 – neontapir 2012-01-17 21:38:23

+0

@DavidKEgghead我用一個更好的例子編輯了答案。我正在做一個迭代,因爲我不是隻選擇一個對象,而是一個列表。 – WoLfulus 2012-01-17 21:46:59

相關問題