C#Linq查询包含动态变量的where子句查询

时间:2012-09-04 17:26:16

标签: c# .net linq-to-entities

我在c#中有一个实体对象。它查询名为FBApi的数据库表。该表存储整数年和整数月。我的函数需要返回大于传入参数的所有记录。

public query(int myYear, int myMonth){
   var context = new MCSSUtility.Entities();
   return context.FBApis.Where(p => p.month == month && p.year == year);
}

我在考虑将整数转换为DateTime对象,但我不确定如何将where子句动态转换为Datetime变量?

public query(int myYear, int myMonth){
   DateTime my = new DateTime(myYear,myMonth,1);
   var context = new MCSSUtility.Entities();
   return context.FBApis.Where(p => new DateTime(p.year,p.month,1) >= my);
}

2 个答案:

答案 0 :(得分:3)

请尝试这个:

            public query(int myYear, int myMonth){
               DateTime my = new DateTime(myYear,myMonth,1);
               var context = new MCSSUtility.Entities();
               return context.FBApis.Where(p => EntityFunctions.CreateDateTime(p.year, p.month, 1, 0, 0, 0)  >= my);
            }

答案 1 :(得分:0)

首先尝试选择具有两个属性的匿名对象:您的FBApi对象和构造的日期时间:

return context.FBApis
.Select(s=>new{MyFBAPIObject=s,MyDateTime=newDateTime(s.Year,s.Month,1)})
.Where(w=>w.MyDateTime>=my)
.Select(s2=>s2.MyFBAPIObject);