如何在列表中选择名称?这本身就在列表中???
我的结构:
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
答案 0 :(得分:5)
假设您想要列表中的所有名称,您可以这样做:
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();
答案 1 :(得分:2)
你可以使用
var result = Items.Where(a => a.id == 1 && a.names.Contains(333)).Select(a => a.names);
答案 2 :(得分:1)
要限制结果,您可以使用Where
,对于投影,您可以在指定字段使用Select
:
var result = Items.Where(x=>x.id == 1).Select(x=>x.name).ToList();
最后,为了获得结果,您应该执行linq查询,这可以通过ToList()
或foreach
循环完成。