我尝试自己解密如何做到这一点,但我对LINQ的使用理解有限。我有两个类,如下所示:
这个想法是你可以有一个名为“Grocery”的对象,它有一个名为“ItemName”的属性,比如是“Carrots”,而这个属性有两种不同的“ItemTypes”,例如其中一个重量为1磅,另一个重量为2磅,每个重量下面都有不同的数量。显然,除了胡萝卜之外还会有很多其他物品,它们也被存储在一个列表中:
我想做的是,根据一定的重量,获取所有杂货的数量清单。例如,对于所有具有1磅种类的物品,我可以像这样做:
我想知道如何使用LINQ表达式实现相同的结果,虽然我不确定是否可以避免使用.ForEach并以不那么冗长(因此不太可读)的方式执行与上面代码相同的操作。感谢您的帮助。
public class Grocery
{
public string ItemName { get; set; }
public List<ItemType> ItemTypes { get; set; }
}
public class ItemType
{
public double Weight { get; set; }
public long Quantity { get; set; }
}
这个想法是你可以有一个名为“Grocery”的对象,它有一个名为“ItemName”的属性,比如是“Carrots”,而这个属性有两种不同的“ItemTypes”,例如其中一个重量为1磅,另一个重量为2磅,每个重量下面都有不同的数量。显然,除了胡萝卜之外还会有很多其他物品,它们也被存储在一个列表中:
List<Grocery> groceries;
我想做的是,根据一定的重量,获取所有杂货的数量清单。例如,对于所有具有1磅种类的物品,我可以像这样做:
List<long> quantities = new List<long>();
foreach (Grocery grocery in groceries)
{
foreach (ItemType itemType in grocery.ItemTypes)
{
if (itemType.Weight == 1)
{
quantities.Add(itemType.Quantity);
}
}
}
我想知道如何使用LINQ表达式实现相同的结果,虽然我不确定是否可以避免使用.ForEach并以不那么冗长(因此不太可读)的方式执行与上面代码相同的操作。感谢您的帮助。