【发布时间】:2020-03-05 21:30:02
【问题描述】:
我有问题
IEnumerable<SelectedProductRequest> selectedProducts = {
new SelectedProductRequest {id = 4, Name = "product1", Price = 23},
new SelectedProductRequest {id = 4, Name = "product1", Price = 44},
new SelectedProductRequest {id = 5, Name = "product2", Price = 11}
}
List<MyProducts> myProducts= {
new MyProducts{id = 4, Name = "product1", isExcl= true},
new MyProducts{id = 5, Name = "product2", isExcl= false}
}
IEnumerable<SelectedProductViewModel> products = myProducts
.Select(product => new SelectedProductViewModel(
product.Name,
selectedProducts.FirstOrDefault(selectedProduct => selectedProduct.id== product.id)?.Price ?? 0,
product.IsExclusive))
.OrderByDescending(product => product.id)))
产品应该退货:
products= {
new SelectedProductRequest {id = 4, Name = "product1", Price = 23, IsExclusive = true},
new SelectedProductRequest {id = 4, Name = "product1", Price = 44, IsExclusive = true},
new SelectedProductRequest {id = 5, Name = "product2", Price = 11, IsExclusive = false}
}
我得到了什么:
products= {
new SelectedProductRequest {id = 4, Name = "product1", Price = 23, IsExclusive = true},
new SelectedProductRequest {id = 5, Name = "product2", Price = 11, IsExclusive = false}
}
那是因为 FirstOrDefault,你知道我怎样才能达到想要的结果吗?
【问题讨论】:
-
根据显示的 linq,您得到的结果符合预期。您在包含 2 个项目的集合上调用 select,因此将重新计算 2 个项目
-
你能解释一下,你的代码有什么问题吗?您是否尝试过同时加入这两个集合?
-
是的,产品集合是正确的,但是如何使用 linq 方法将 selectedProducts 合并到产品中?