代码之家  ›  专栏  ›  技术社区  ›  DougJones

遍历从var返回的数据以获取列的名称和值

  •  0
  • DougJones  · 技术社区  · 17 年前

        public static List<object> GetDataSource(string QueryName)
        {
            MyEntity myEntity = new MyEntity();
            switch (QueryName)
            {
                case "FirstQuery":
                    var s = (from x in myEntity.TableName
                             select new
                             {
                                 Column1 = x.FirstColumn,
                                 Column2 = x.SecondColumn
                             }).ToList();
    
                    return s.Cast<object>().ToList();
            }
            return null;
        }
    
    2 回复  |  直到 17 年前
        1
  •  3
  •   Darin Dimitrov    17 年前

    匿名类型是局部作用域的。你不能在定义它们的方法之外使用它们(除了诉诸于 horrible grotty hack ).为什么不定义一些以强类型方式表示数据的域类呢:

    public class Table
    {
        public string Column1 { get; set; }
        public string Column2 { get; set; }
    }
    
    public static IEnumerable<Table> GetDataSource(string QueryName)
    {
        MyEntity myEntity = new MyEntity();
        switch (QueryName)
        {
            case "FirstQuery":
                return from x in myEntity.TableName
                       select new Table
                       {
                           Column1 = x.FirstColumn,
                           Column2 = x.SecondColumn
                       };
        }
        return Enumerable.Empty<Table>();
    }
    
        2
  •  0
  •   Misha N.    17 年前

    public class Table{
    public string Column1 { get; set; }
    public int Column2 { get; set; }}
    
     public static IEnumerable<T> GetDataSource<T>()
        {
            MyEntity myEntity = new MyEntity();
    
            if (typeof(T) == typeof(Table))
            {
                IQueryable<Table> query = from x in myEntity.Table1
                       select new Table
                       {
                           Column1 = x.TheColumn1,
                           Column2 = x.TheColumn2
                       };
    
               return query.ToList().Cast<T>();
            }
            if (typeof(T) == typeof(Table2))
            {
                IQueryable<Table2> query = from x in myEntity.Table2
                       select new Table2
                       {
                           TestColumn1 = x.TheColumn123,
                           TestColumn2 = x.TheColumn321
                       };
    
                return query.ToList().Cast<T>();
            }
    
            return Enumerable.Empty<T>();
        }