1

我有一个带有一张表的数据集。我想用 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 试试,我不知道为什么它不起作用。

任何人都知道为什么这不起作用?

4

4 回答 4

6
r => new { column1 = r.Field<string>("UniqueIDs") }

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

尝试将其更改为。

r => r.Field<string>("UniqueIDs")
于 2013-09-24T13:52:10.843 回答
2

如果你想要一个List<string>,你应该选择strings,而不是匿名类型的对象。

List<string> list = dsUniqueIds.Tables[0].AsEnumerable().Select(r => r.Field<string>("UniqueIDs")).ToList();
于 2013-09-24T13:52:39.227 回答
1

new { column1 = r.Field<string>("UniqueIDs") }正在创建具有单个属性的匿名类型column1

你有List<SomeAnonymousType>你不能将它转换为List<string>. 这就是编译器抛出编译时错误的原因。

试试这个

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

查看匿名类型以获取更多信息。

于 2013-09-24T13:52:04.723 回答
1

如果你写它会工作

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

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

于 2013-09-24T13:52:12.543 回答