【问题标题】:Get field from dynamically/programatically named column name and Sum with EF从动态/编程命名的列名中获取字段并使用 EF 求和
【发布时间】:2014-04-18 10:58:38
【问题描述】:

今天我在这里完成了: Get field from dynamically/programatically named column name with Entity Framework

我引用它是因为这个问题与它非常相似。

我想从特定列中获取所有 int 值并将它们相加并返回值... 我该怎么办?

例如:

string column_name = "Col1";
int meterID = 6;

作为旧方法: "SELECT SUM(column_name) FROM table_name Where MeterID = meterID;"

【问题讨论】:

  • “示例”应该是什么意思?你试过什么?
  • 我想用 EF 对列的数据求和。我想用变量指定列名。这就是我想要做的。 tSQL 是一个需要理解的老例子。我想用EF来做。谢谢
  • 当您可以使用 lambda 时,为什么要指定带有变量的列?
  • 什么是 lambda?我没有信息

标签: c# entity-framework entity-framework-6 c#-5.0


【解决方案1】:

如果你有课

public class TableName
{
    public int MeterId { get; set; }

    public int ColumnName { get; set; }
}

还有一个DbContext

public class MyDbContext : DbContext
{
    public IDbSet<TableName> TableName { get; set; }
}

您可以通过以下方式生成给定的查询

public int GetSum(int meterId)
{
    return context.TableName.Where(x => x.MeterId == meterId).Sum(x => x.ColumnName);
}

【讨论】:

  • 感谢您的回复,但这种方法对我来说很容易:stackoverflow.com/questions/22377804/…您也可以举一个这种方法的例子吗?
  • 这在实体框架中是不可能的,你不能使用反射来创建这样的查询。 EF 看到的是.Where().Sum() 部分,然后它将其转换为 SQL 以查询数据库。另一种选择是使用常规的 SQL 查询,但是 EF 的全部目的在 IMO 中消失了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 2018-02-01
  • 2015-12-31
  • 1970-01-01
相关资源
最近更新 更多