【问题标题】:C# Linq query with where clause query containing a dynamic variable带有包含动态变量的 where 子句查询的 C# Linq 查询
【发布时间】:2012-09-04 17:26:15
【问题描述】:

我在 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);
}

【问题讨论】:

  • 您要返回什么?您必须包含方法的重新运行类型(日期时间或布尔值?)。
  • 这只是我创建的一个简单示例。回报并不重要。不过还是谢谢。

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


【解决方案1】:

请试试这个:

            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);
            }

【讨论】:

    【解决方案2】:

    尝试首先选择一个具有两个属性的匿名对象:您的 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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-12
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多