2

リストから名前を選択するにはどうすればよいですか?それ自体がリストにありますか?

私の構造:

public class Item
{
    int id;
    List<Name> names;
}

public class Name
{
    int id; 
    string name;
}

List<Item> Items;

コード:

Items.Select(a => a.id = 1) //whats next 
4

3 に答える 3

6

リスト内のすべての名前が必要な場合は、次のことができます。

List<Name> matchingNames = Items.Where(a => a.id == 1).Select(a => a.names);


または、リストから文字列名のリストが必要な場合は、次のようにすることができます。

List<string> matchingNames = Items
    .Where(a => a.id == 1)
    .SelectMany(n => n.names)
    .Select(n => n.name)
    .ToList();

次に、2番目のステートメントを使用している場合は、次のようにしてリストを次の形式で出力できますitem, item, item

string outputtedNames = string.Join(", " + matchingNames);

編集:コメントで要求されているように、名前IDに基づいてIDで名前を取得する方法は次のとおりです。

List<Name> matchingNames = Items
    .SelectMany(a => a.names)
    .Where(n => n.id == 1)
    .ToList();

編集2:名前アイテムとIDが1のアイテムを表示するには、次のことを試してください。

List<Name> matchingNames = Items
    .Where(a => a.id == 1)
    .SelectMany(a => a.names)
    .Where(n => n.id == 1)
    .ToList();
于 2012-08-26T18:15:11.757 に答える
2

あなたが使用することができます

var result = Items.Where(a => a.id == 1 && a.names.Contains(333)).Select(a => a.names);
于 2012-08-26T18:11:35.850 に答える
1

結果を制限するためにを使用できWhere、投影のためSelectに指定されたフィールドで使用できます。

var result = Items.Where(x=>x.id == 1).Select(x=>x.name).ToList();

最後に、結果を取得するには、linqクエリを実行する必要があります。これは、ToList()またはforeachループで実行できます。

于 2012-08-26T18:18:06.883 に答える