如何实现group by in循环不使用列表.GroupBy方法
本文关键字:循环 列表 方法 GroupBy in by 何实现 实现 group | 更新日期: 2023-09-27 18:02:46
foreach (var type in types)
{
BaseType existing = myOrderdList.Find(x => x.Id == type.Id);
if (existing == null)
{
myOrderdList.Add(type);
}
else
{
type.BaseProducts.Add(existing.BaseProducts[0]);
myOrderdList.Add(type);
}
}
我有一个BaseType
类的列表。每个BaseType
都有一个BaseProducts
list。
这是我的类:
public class BaseProduct
{
public int ID { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public string Path { get; set; }
}
这是我的BaseType类:
public class BaseType
{
public int Id { get; set; }
public string CatalogName { get; set; }
public List<BaseProduct> BaseProducts { get; set; }
}
我有一个存储过程,它将返回这样的记录:
Id Name ProductName Price
7 Digital Cameras 35 Sony DSCWX350 Digital Camera Black 600
7 Digital Cameras 36 Sony DSCH400 Digital Camera Black 600
8 Mobiles 15 Samsung Galaxy S4 VE GTI9515 Black 4G LTE 600
8 Mobiles 16 Samsung Galaxy SIII Neo Dual Sim 600
8 Mobiles 17 Samsung Galaxy Note 3 Neo Duos Smarthphone 600
现在我的服务方法将为每一行创建一个basetype的对象。
所以它将返回一个basetype的列表
如何按Name Not using IList对结果进行分组?GroupBy Method ?
So Far I got this:
var types = ReadFromTheServiceMethd();
List<BaseType> myOrderdList = new List<BaseType>();
foreach (var type in types)
{
BaseType existing = myOrderdList.Find(x => x.Id == type.Id);
if (existing == null)
{
myOrderdList.Add(type);
}
else
{
type.BaseProducts.Add(existing.BaseProducts[0]);
myOrderdList.Add(type);
}
}
实现这一点的一种方法是有一个Dictionary<int, BaseType>
,其中int
是BaseType
的Id
。考虑到这一点,如果您能够在执行存储过程时也为Name
字段返回Id
,那么您可以这样做:
var products = ReadFromTheServiceMethd();
Dictionary<int, BaseType> baseTypes = new Dictionary<int, BaseType>();
foreach (var product in products)
{
if (!baseTypes.ContainsKey(product.NameIdFieldHere))
{
BaseType newBaseType = new BaseType();
// set the other properties here...
baseTypes[product.NameIdFieldHere] = newBaseType;
}
baseTypes[product.NameIdFieldHere].BaseProducts.Add(product);
}