类列表将多个值分配给字符串列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类列表将多个值分配给字符串列表相关的知识,希望对你有一定的参考价值。
class orders
{
public string orderNumber { get; set; }
public string id { get; set; }
public List<string> idList { get; set; }
}
我有一个订单列表,可以是1到100之间的任何地方。我需要为列表中的每个成员分配列表中其他成员“orderNumber”相同的所有“id”。我想将其分配给“idList”字符串列表。在订单列表中,可能存在多组具有相同“orderNumber”的订单。
我试图从逻辑上考虑这一点,但无法提出一个有效的解决方案。
我尝试了以下方法:
List<string> temp = new List<string>();
for (int x = 0; x < orders.Count; x++)
{
if (string.Equals(orders[x].orderNumber, orders[x + 1].orderNumber))
{
temp.Add(orders[x].id);
temp.Add(orders[x + 1].id);
i++;
}
else
{
for(int o = 0; o < i; o++)
{
orders[o].idList= new List<string>();
orders[o].idList= temp;
}
i = 0;
temp.Clear();
}
}
答案
您可以GroupBy orderNumber,并加入同一组内的id
s:
var result = orders.GroupBy(x => x.orderNumber).Select(g => new orders{
orderNumber = g.Key,
idList = g.Select(x => x.Id).ToList()
}
但是,由于您并不真正需要orders
列表,因此最好选择匿名类型:
.Select(g => new {
orderNumber = g.Key,
idList = g.Select(x => x.Id).ToList()
}
或者只是创建一个新类型的类:
class FinalOrder {public string orderNumber; public List idList; }
然后:
.Select(g => new FinalOrder{
orderNumber = g.Key,
idList = g.Select(x => x.Id).ToList()
}
以上是关于类列表将多个值分配给字符串列表的主要内容,如果未能解决你的问题,请参考以下文章