0

我在 ASP.Net MVC 中工作并使用实体框架。

我有以下表格架构

MyTable(Y1947, Y1948, Y1949, Y1950,.........Y2012)

列从Y1947到开始Y2012

我想遍历所有这些列。我正在使用以下代码,该代码不可执行:

    EntityFramework ef = new EntityFramework();
    var q = from table in ef.MyTable
            select table;

    int i = 1947;

    foreach(var item in q)
    {
       string str=item["Y" + i].toString();   // Error in Entity Framework
       i++;
    }

但是实体框架限制使用item.Y1947等,我只想遍历所有列。请帮助我如何做到这一点。

4

2 回答 2

3

在实体框架中,您没有获得数据表,而是获得了对象。如果你真的想要一个数据表或类似的东西,最好选择另一个框架。

但是你可以通过反射来做到这一点,某种形式的东西(还没有编译这个,但你得到了图片)

foreach(var item in q)
{
    foreach(var col in item.GetType().GetProperties().Where(p=>p.Name.StartsWith("Y19") || p.Name.StartsWith("Y20"))
    {
        var thing = col.GetValue(item, null);
    }
}
于 2013-06-19T11:21:49.880 回答
1

不知道你想实现什么,但如果我理解得很好,我会去做这样的事情

public partial class MyTable {

  public string DisplayYValues() {
    var sb = new StringBuilder();
    var properties = this.GetType().GetProperties().Where(m => m.Name.StartsWith("Y"));

   foreach (var property in properties) {
      var value = property.GetValue(this, null);
      sb.AppendLine(value == null ? string.Empty : value.ToString());
   }
   return sb.ToString();
  }
}

然后使用

EntityFramework ef=new EntityFramework();
    var q=(from table in ef.MyTable
           select table).ToList();

var result = q.Select(m => m.DisplayYValues());
于 2013-06-19T11:22:05.297 回答