0

私はクエリしようとしているそのようなDataTableを持っています。

ID|Language
sfd2133 English
asd213d English
vgjj31j English
fvjfjf2 German
dac31e3 English
asaq213 French
dent231 French
1dedae3 German

私はなんとか単一の言語を取得しました:

        IEnumerable<Tuple<string, string>> ids=
            from asset in selectedItems.AsEnumerable()
            select new Tuple<string, string>(asset["ID"].ToString(), 
            asset["Language"].ToString());

ID のコレクションと単一市場のIEnumerable<List<Tuple<string, string>>場所を取得するにはどうすればよいですか。たとえば、フランス語のみです。List<Tuple<string,string>>

4

3 に答える 3

2

あなたが本当に達成したいことはわかりません。List代わりにを取得する最も簡単な方法は、拡張メソッドIEnumerableを使用することです。ToList()

List<Tuple<string, string>> ids=
            (from asset in selectedItems.AsEnumerable()
            select new Tuple<string, string>(asset["ID"].ToString(), 
            asset["Language"].ToString())).ToList();

各リストに単一の言語の行のみが含まれている場所を取得する場合IEnumerable<List<>>は、グループ化構文を使用できます。

IEnumerable<List<Tuple<string, string>>> ids=
            from asset in selectedItems.AsEnumerable()
            group asset by asset["Language"].ToString() into g
            select g.Select(i => new Tuple<string, string>(i["ID"].ToString(), 
            i["Language"].ToString())).ToList();
于 2012-07-06T09:57:21.650 に答える
2

したがって、言語ごとにグループ化する必要があります。

Dictionary<string, IEnumerable<String>>代わりにa を使用しないのはなぜですか。

Dictionary<String, IEnumerable<String>> DialogResult =
            selectedItems.AsEnumerable()
            .GroupBy(r => r.Field<string>("Language"))
            .ToDictionary(g => g.Key, g => g.Select(r => r.Field<string>("ID")));

キーは言語で、値はIEnumerable<String>適切な ID です。

たとえば、Englishのすべての ID を一覧表示する場合は、次のようにします。

var englishIDs = DialogResult["English"];
String output = string.Join(", ", englishIDs); // sfd2133, asd213d, vgjj31j, dac31e3

Dictionaries最高のルックアップ パフォーマンスが得られます。

于 2012-07-06T10:04:10.430 に答える
1
Hello try with (Essaye avec ce code Wild)

(from asset in selectedItems.AsEnumerable()

select new
{
   ID= asset.Field<String>("ID"),
   Language= asset.Field<String>("Language")
})
.AsEnumerable()
.ToDictionary(k => k.ID, v => v.Language);
于 2012-07-06T09:55:39.677 に答える