【问题标题】:Dataset to List with Linq使用 Linq 列出的数据集
【发布时间】:2014-04-10 06:06:14
【问题描述】:

我有一个包含一张表的数据集。我想用 Linq 将这个表转换成一个列表。

这段代码运行良好:

var list = dsUniqueIds.Tables[0].AsEnumerable()
                      .Select(r => new { column1 = r.Field<string>("UniqueIDs") }).ToList();

但是当我尝试在这样的列表中更改演员表时:

List<string> list = dsUniqueIds.Tables[0].AsEnumerable()
                               .Select(r => new { column1 = r.Field<string>("UniqueIDs") })
                               .ToList();

我收到以下错误:

Cannot implicitly convert type
'System.Collections.Generic.List<AnonymousType#1>' to
'System.Collections.Generic.List<string>

我需要列表中的这些数据,以便使用 jQuery 在文本框上自动完成。 要将数据获取到 jQuery,我使用 JavaScriptSerializer 和 Serialize(list)。 Serialize(list) 不适用于 var。如果我使用 var,我只会在 JavaScript 中获取对象。 如果我用 foreach 填充列表,这很好用。但我想用 Linq 试试,我不知道为什么它不起作用。

有人知道为什么这不起作用吗?

【问题讨论】:

  • 因为你没有选择字符串
  • 您的 linq 查询返回具有属性 column1 的对象列表。这不是 List

标签: c# javascript jquery linq


【解决方案1】:
r => new { column1 = r.Field<string>("UniqueIDs") }

这将创建一个具有名为column1 的属性的新匿名类型。

尝试将其更改为。

r => r.Field<string>("UniqueIDs")

【讨论】:

    【解决方案2】:

    如果你想要List&lt;string&gt;,你应该选择strings,而不是匿名类型的对象。

    List<string> list = dsUniqueIds.Tables[0].AsEnumerable().Select(r => r.Field<string>("UniqueIDs")).ToList();
    

    【讨论】:

      【解决方案3】:

      new { column1 = r.Field&lt;string&gt;("UniqueIDs") } 正在创建一个具有单个属性 column1 的匿名类型。

      您有List&lt;SomeAnonymousType&gt;,您无法将其转换为List&lt;string&gt;。这就是编译器抛出编译时错误的原因。

      试试这个

      List<string> list = dsUniqueIds.Tables[0]
                                     .AsEnumerable()
                                     .Select(r => r.Field<string>("UniqueIDs"))
                                     .ToList();
      

      查看Anonymous types 了解更多信息。

      【讨论】:

        【解决方案4】:

        如果你写它会起作用

        List<string> list = dsUniqueIds.Tables[0].AsEnumerable().Select(r=> r.Field<string>("UniqueIDs") }).ToList();
        

        您的代码不起作用,因为 AnonymouseType!=string

        【讨论】:

          猜你喜欢
          • 2011-12-27
          • 2011-07-11
          • 1970-01-01
          • 1970-01-01
          • 2013-06-15
          • 2011-02-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多