双重选择列表

Ale*_*x F 2 .net c# linq

如何在列表中选择名称?这本身就在列表中???

我的结构:

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

public class Name
{
    int id; 
    string name;
}

List<Item> Items;
Run Code Online (Sandbox Code Playgroud)

码:

Items.Select(a => a.id = 1) //whats next 
Run Code Online (Sandbox Code Playgroud)

mat*_*mmo 5

假设您想要列表中的所有名称,您可以:

List<Name> matchingNames = Items.Where(a => a.id == 1).Select(a => a.names);
Run Code Online (Sandbox Code Playgroud)


或者,如果您想要列表中的字符串名称列表,您可以执行以下操作:

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

然后,如果您正在使用我的第二个语句,您可以item, item, item通过执行以下操作输出格式的列表:

string outputtedNames = string.Join(", " + matchingNames);
Run Code Online (Sandbox Code Playgroud)

编辑:根据评论中的要求,以下是如何根据名称ID按ID获取名称:

List<Name> matchingNames = Items
    .SelectMany(a => a.names)
    .Where(n => n.id == 1)
    .ToList();
Run Code Online (Sandbox Code Playgroud)

编辑2:要显示ID为1的名称项和项,请尝试以下操作:

List<Name> matchingNames = Items
    .Where(a => a.id == 1)
    .SelectMany(a => a.names)
    .Where(n => n.id == 1)
    .ToList();
Run Code Online (Sandbox Code Playgroud)