2012-03-23 4 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は1つの値だけを返すものとします。 foreachループなしで上記のLINQの結果を得る方法はありますか? (申し訳ありませんが、私はLINQを始めました)。foreachのないLinq?

更新:titleIDはデータベース内の一意のキーなので、結果は1つだけです。

+0

'FirstOrDefault'を使用してください –

+2

あなたは最初の値か最後の値を意味しますか?あなたが投稿したコードはpopUpHTMLを最後の値に設定するためです。 – Brandon

答えて

8

今、あなたのクエリがIEnumerable、(あなたは常に正確つの結果があるだろうことを絶対的に確信している場合やSingle())の代わりにFirstOrDefault()を使用して返します。

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

非常に単純でストレートな答えです。ありがとうございました:) – developer747

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

ここでFirstOrDefault(またはFirstまたはSingle)を呼び出す必要があります。 –

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のアイテムが存在しない場合は、nullです。

+0

これは 'Template'項目を選択しますが、OPが望む' HTML'プロパティは選択しません – BrokenGlass

0
var popUpHTML = TemplateList.FirstOrDefault(Temp => Temp.TitleID == titleID); 
関連する問題