2011-06-17 91 views
6

我有一個非常基本的問題,但它在做我的堅果!檢查一個變量是否爲空c#

我已經創建了一個變量,它檢查我的數據表檢查,看看使用我的頁面控件ID的項目是否已經存在。如果這樣做,我然後要警告我的用戶,他們已經選擇了頁面顏色!

我的問題是如何檢查這個變量是否爲空!

var qry = from x in db.DT_Control_ColourPalette_PageColors 
        where x.PageControlID == int.Parse(HF_CPID.Value) 
        select new 
        { 
         x.PageControlID, 
        }; 

我認爲的論點是正確的?

if (qry !=null) 

回答

6

假設應該返回一個值 - 如果是這樣的話:

var qry = (from x in db.DT_Control_ColourPalette_PageColors 
        where x.PageControlID == int.Parse(HF_CPID.Value) 
        select new 
        { 
         x.PageControlID, 
        }).FirstOrDefault(); 

if(qry != null) 
{ 
    // do stuff 
} 
16

據我所知,查詢表達式不返回null。如果沒有結果,你只需要IQueryable<T>而沒有T

你可以用這個來代替,看看是否有什麼結果集:

if (qry.Any()) 
+0

+1,因爲這絕對是最直接,最準確的回答提出的問題。 – Shibumi 2011-06-17 15:44:50

0
var qry = from x in db.DT_Control_ColourPalette_PageColors 
        where x.PageControlID == CheckValue(HF_CPID.Value) 
        select new 
        { 
         x.PageControlID, 
        }; 


private int CheckValue(sting str) 
{ 
    if(!string.IsNullOrEmpty(str)) 
    { 
    return int.Parse(str); 
    } 
else 
    return 0;//or your default value you want to return 
} 
0

我會寫這個作爲對另一個答案的迴應,但這實在太大了。這或多或少是爲了迴應Nathan的回答。

如果結果既是一個單一的值,而是從一個屬性中獲得,我也有一些評論。

  1. 沒有理由使用匿名對象來選擇單個值。
  2. 如果您發現自己將括號中的查詢式語句包裝爲在結果上使用點樣式,則可以考慮使用點樣式。
  3. 根據您的數據,在FirstOrDefaultSingleOrDefault之間進行選擇。有時,隱含地斷言結果是「一事一無」與「一事一無事」相關。
var result = db.DT_Control_ColourPalette_PageColors 
       .Where(x => x.PageControlID == int.Parse(HF_CPID.Value)) 
       .Select(x => x.PageControlID) 
       .SingleOrDefault(); 

if (result != null) 
{ 
    //... 
} 
+1

如果你打算在列表項中放置代碼塊,每行縮進8個空格而不是4個。如果你想直接在列表之後放置一個代碼塊,但不是它的一部分,我認爲你可以使用HTML註釋打破它們。 – BoltClock 2011-06-17 15:46:00

+0

@Bolt +1謝謝。這種kludgy,但考慮到Markdown有多神奇,我會接受它。 – Shibumi 2011-06-17 15:51:29