Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
比较列表类型年份';在linq to sql查询中具有datetime列的s值_Linq_Linq To Sql - Fatal编程技术网

比较列表类型年份';在linq to sql查询中具有datetime列的s值

比较列表类型年份';在linq to sql查询中具有datetime列的s值,linq,linq-to-sql,Linq,Linq To Sql,我使用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

我使用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();
现在我想按年份显示这些数据。 我有一个年价值的课程。。值可以为null,也可以是单年或多年的列表类型。我指的是2009年或2009年和2010年。我从下面的课程中获得了年值

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

现在,我如何更改上述查询,使其接受null或年份值列表,并与datetime列上的dte_Cru进行比较,并仅显示特定年份的数据

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"])
但是,如果存在多年,您可能需要将
会话[“UserYearSelected”]
转换为
字符串[]

显然无法测试您的查询或检查它是否编译,但希望它能帮助您


您还可以查看更多帮助。

感谢Demon提供的链接。它帮助我解决了问题。。这是解决办法

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())))

这里没有人帮助我??嗨,让我举个例子……我有一个会话,它的值为200920102012,我在字符串数组中按以下代码字符串分割该值:[分割=HttpContext.Current.session[“UserYearSelected”].ToString().split(',');现在我有了数组的列表。现在包含一个值的工作,但我有多个值。我如何获得多年的数据?好东西,很高兴你把它排序了!记住把你的问题标记为已回答。