【问题标题】:How to use List<dynamic>如何使用列表<动态>
【发布时间】:2013-12-04 09:03:22
【问题描述】:

我需要从我的数据库中获取账单列表。 这是我的代码:

public static List<dynamic> GetBillers()
{
    DataLayer.DLContext context = new DataLayer.DLContext();

    var Billers = (from b in context.Biller
                   where b.IsActive == true && b.IsDeleted == false
                   select new
                   {
                       ID = b.ID,
                       DisplayName = b.DisplayName
                   }).ToList();

    return Billers;
}

我收到此错误:

无法将类型Collections.Generic.List&lt;AnonymousType#1&gt; 隐式转换为System.Collections.Generic.List&lt;dynamic&gt;

请帮忙。

【问题讨论】:

标签: c# list dynamic


【解决方案1】:
(from b in context.Biller
 where b.IsActive == true && b.IsDeleted == false
 select (dynamic) new {
     ID = b.ID,
     DisplayName = b.DisplayName
 }).ToList();

应该做的工作。不过,就个人而言,我不确定这是一个特别有用的举措——我建议改为返回一个已知的类/接口。 dynamic 有多种用途,但这不是一个好用的。

【讨论】:

    【解决方案2】:

    转换为动态:

    var Billers = (from b in context.Biller
                   where b.IsActive == true && b.IsDeleted == false
                   select new
                   {
                       ID = b.ID,
                       DisplayName = b.DisplayName
                   }).ToList<dynamic>();
    

    【讨论】:

      【解决方案3】:

      您不能将List&lt;T&gt; 分配给List&lt;dynamic&gt; 对象。您需要一个一个地添加每个对象;

              var temp = new List<dynamic>();
              foreach (object obj in Billers)
              {
                  temp.Add(obj);
              }
      

      【讨论】:

      • 也可以在已有查询中进行;此外,在这里您正在显着改变语义:原始查询仅使 IDDisplayName 可用 - 大概是故意的。这使得原始对象可用。这可能是好是坏,但是:它与问题中代码的结果不同。
      猜你喜欢
      • 2022-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-24
      • 1970-01-01
      • 2019-10-31
      • 2014-02-25
      相关资源
      最近更新 更多