1

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>を選択する必要があります。string

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 に答える