2012-03-23 73 views
1
   string popUpHTML=""; 

       var xx = from Temp in TemplateList 
           where 
           (
           Temp.TitleID == titleID 
           ) 
           select Temp.HTML; 

       foreach (var s in xx) 
       { 
        popUpHTML = s.ToString(); 
       } 

上面的代碼正在工作。執行的linq應該只返回一個值。有什麼辦法可以在沒有foreach循環的情況下獲得上述LINQ的結果。 (對不起,我是LINQ的新手)。Linq沒有foreach?

更新:titleID是數據庫中的唯一鍵,因此只有一個結果是預期的。

+0

use'FirstOrDefault' – 2012-03-23 14:55:59

+2

當你說只返回一個值時,你的意思是第一個值還是最後一個?因爲您發佈的代碼會將popUpHTML設置爲最後一個值。 – Brandon 2012-03-23 14:58:13

回答

8

現在您的查詢返回的IEnumerable,而是使用FirstOrDefault()(或Single()如果你是絕對相信,時時會出現正好一個結果):

var popUpHTML = (from Temp in TemplateList 
        where Temp.TitleID == titleID 
        select Temp.HTML).FirstOrDefault(); 
+0

一個非常簡單直接的答案。謝謝:) – developer747 2012-03-23 15:01:16

0
var xx = (from Temp in TemplateList 
       where 
       (
       Temp.TitleID == titleID 
       ) 
       select Temp.HTML).Take(1); 
+3

您仍然需要在這裏調用FirstOrDefault(或First或Single)。 – 2012-03-23 14:58:35

2
string popUpHTML = 
    (
    from Temp in TemplateList 
    where (Temp.TitleID == titleID) 
    select Temp.HTML 
    ) 
    .FirstOrDefault(); 
4
var popUpHTML = TemplateList.Where(temp => temp.TitleID == titleID) 
          .Select(temp => temp.HTML) 
          .SingleOrDefault(); 

popUpHtmlnull如果不存在具有所提供的ID的項目。

+0

這將選擇一個'Template'項目,但不是它的HTML屬性,這是OP想要的 – BrokenGlass 2012-03-23 16:05:32

0
var popUpHTML = TemplateList.FirstOrDefault(Temp => Temp.TitleID == titleID);