2011-02-28 161 views
0

我通常做得很好,但出於某種原因,我無法弄清楚爲什麼這個特定的查詢是擊敗我。幫助LINQ to SQL查詢

爲了簡單起見這裏是數據庫(品牌和PAGETITLE頁):

enter image description here

的PageTitle僅僅是保持SEO數據表(有每Brand只有一行)

我想:從PageTitle中選擇一行,其中品牌= p(保存查詢字符串值的變量)

這是我想要做的一個示例(如果沒有品牌記錄在PageTitle我不想拋出一個錯誤)。

var pages = da.PageTitles.Where(x => x.Brands.Single(z => z.BrandID == p)).SingleOrDefault(); 
       if (pages.Any()) 
       { 
        txtSeoTitle.Text = pages.Title; 
        txtSeoMetaKeywords.Text = pages.Keywords; 
        txtSeoMetaDesc.Text = pages.Description; 
       } 
+0

以及'SingleOrDefault'可以返回'null',然後調用'Any'擴展會拋出一個異常。 – 2011-02-28 03:48:00

回答

1

除非我缺少明顯的東西,你就不能做到這一點:

var page = db.PageTitles 
       .FirstOrDefault(x => x.Brands.Any(y => y.BrandId == p)); 

SingleOrDefault將拋出一個異常,如果返回多行,所以我認爲你需要FirstOrDefault

+0

我認爲這可能是我正在查找的查詢,但我需要將文本框包裝在if語句中,並且if(pages){...'不起作用。 – 2011-02-28 03:58:03

+0

如果沒有項目與謂詞匹配,則FirstOrDefault將返回null。所以只要做'if(page)!= null {txtSeoTitle.Text = page.Title;等'等等 – RPM1984 2011-02-28 04:00:16