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();

然后,如果您使用我的第二条语句,您可以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()orforeach循环来完成。

于 2012-08-26T18:18:06.883 回答