2012-09-14 121 views
0

我不知道它是否可能。 我有搜索一些鏈接,但沒有找到解決方案。Linq查詢之間的條件查詢

我有一個LINQ查詢從數據庫中獲取一些數據。 現在,在我的表中的數據庫列中,照片可以有或沒有圖像。 這意味着照片也可以爲null。

所以我的問題是: 是有辦法,而不是使用如果LINQ查詢else條件,我們可以把我這樣的代碼:

DataTable Customer=ds.Tables["Customer"] 
    if (Photo==null) 
    { 
     var items = (from d in Customer.AsEnumerable() 
           where d.Field<string>("strHin") != string.Empty 
           orderby d.Field<DateTime>("date") 
           select new News 
           { 
            NewsItemId = d.Field<Int32>("intCustId").ToString(), 
            HeadLine = d.Field<string>("strHin"), 
            Photo = null, 
           }).Take(Convert.ToInt32(limit)).ToList(); 
        return items; 

    } 
    if(Photo !=null) 
    { 
     var items = (from d in Customer.AsEnumerable() 
           where d.Field<string>("strHin") != string.Empty 
           orderby d.Field<DateTime>("date") 
           select new News 
           { 
            NewsItemId = d.Field<Int32>("intCustId").ToString(), 
            HeadLine = d.Field<string>("strHin"), 
            Photo = @"http://192.168.1.12:801/ImageById/" + d.Field<Int32>("intCustId") + ".jpg" 
           }).Take(Convert.ToInt32(limit)).ToList(); 
        return items; 
    } 

我不想,如果他人使用因爲我已經在我的代碼中使用了許多其他功能。 有沒有一種方法,我可以用linq查詢沒有重複的代碼。

+7

你使我們臨場發揮的區別...有什麼區別你的兩個代碼塊之間? –

+0

現在,我正在努力看到你的2 linq聲明中的不同點.. – BugFinder

+1

和theres沒有錯誤的elses! – BugFinder

回答

1
var result= (from d in Customer.AsEnumerable() 
          where d.Field<string>("strHin") != string.Empty 
          orderby d.Field<DateTime>("date") 
          select new News 
          { 
           NewsItemId = d.Field<Int32>("intCustId").ToString(), 
           HeadLine = d.Field<string>("strHin"), 
           Photos = Photo==null?"":@"http://192.168.1.12:801/ImageById/" + d.Field<Int32>("intCustId") + ".jpg", 
          }).Take(Convert.ToInt32(limit)).ToList(); 
       return items; 

注:我有改變的匿名變量名從照片到照片怎麼把它與衝突的照片外變量,內部匿名類型變量照片

+0

成功完成。 非常感謝你.. :) –

+0

我甚至不認爲你必須重新命名'News'屬性/變量'Photo'(除了可讀性)。我相信編譯器能夠從上下文中使用正確的「Photo」。 –

+1

是的,你的權利,我不確定這一點。謝謝 – FosterZ