2013-08-16 34 views
0

我有LINQ to SQL的查詢裏面我是用綁定電網與datetime列在LINQ比較列表類型一年的價值sql查詢

var query = (from bottom in 
           (from d in context.tbl_pl_data 
            where (d.lng_clientid.Equals(ClientId) && d.str_name.Equals(name) && d.int_deleted.Equals(0)) 
            orderby d.dte_mod_on descending 
            select d).AsEnumerable() 
          select new tbl_pl_data 
             { 

              lng_id = bottom.lng_id, 
              str_itemdsc = bottom.str_itemdsc, 
              dte_cr_on = bottom.dte_cr_on, 
              str_cr_by = bottom.str_cr_by, 
              str_mod_by = bottom.str_mod_by, 
              dte_mod_on = bottom.dte_mod_on 
             }).ToList().OrderByDescending(d=>d.dte_mod_on).ToList(); 

現在我想根據一年來顯示此數據。 我有會議,有價值的一年..價值可能爲空或列表類型有單年或多年..我的意思是2009年或2009年和2010年。我從下面的會議獲得年值。

Session["UserYearSelected"] = model.str_year_selected.Split(',').ToList(); 

現在我該怎樣更改我上面的查詢,以便它接受空或年份值的列表,並與dte_cr_on列這是特定日期時間年,並顯示數據僅

+0

這裏沒有人幫我嗎? – Mahajan344

回答

0

爲link..it感謝惡魔幫我解決了問題..這裏是解決方案

string[] split=new string[]{}; 
      if (HttpContext.Current.Session["UserYearSelected"] != null) 
      { 
       split = HttpContext.Current.Session["UserYearSelected"].ToString().Split(','); 
      } 
var query = (from anode in 
          (from d in context.tbl_pl_data 
           where (d.lng_clientid.Equals(ClientId) && d.str_name.Equals(name) && d.int_deleted.Equals(0) && (split.Length==0 || split.Contains(d.dte_cr_on.Year.ToString()))) 
+0

好東西,很高興你把它分類!請記住將您的問題標記爲已回答。 – Damon

1

我會採取比較刺在此和偵察你需要沿着線的東西:

from d in context.tbl_pl_data 
where (d.lng_clientid.Equals(ClientId) && d.str_name.Equals(name) && d.int_deleted.Equals(0) 
     && d.dte_cr_on.Year.Contains(Session["UserYearSelected"]) 

如果有多個年份然而,你可能需要到Session["UserYearSelected"]轉換成string[]

顯然無法測試您的查詢或檢查它編譯,但希望它會幫助你。

你也可以看看this獲得進一步的幫助。

+0

嗨,讓我給我例子....我有會議,有值2009,2010,2012,我已經在這個值字符串數組中分割這個值字符串[] split = HttpContext.Current.Session [「UserYearSelected」 ]的ToString()分割( '')。所以現在我有數組列表。現在包含1值的工作,但我有多個值。如何獲取多年的數據? – Mahajan344