我正试图从列表中获取产品名称,它与使用LINQ的列表中的产品tid相匹配,但我没有运气。
ProductID在两个列表中,它应该以某种方式链接。
我试着:
Product product = products.FirstOrDefault(x => x.ProductName == orderDetail.ProductID);
List<orderDetail> orderDetails = Database.getOrderDetails();
List<Product> products = Database.getProducts();
textBox1.Text = Convert.ToString(orderDetail.OrderID);
textBox2.Text = Convert.ToString(Productname);
textBox3.Text = Convert.ToString(orderDetail.UnitPrice);
textBox4.Text = Convert.ToString(orderDetail.Quantity);
textBox5.Text = Convert.ToString(orderDetail.Discount);
我认为您想要这样的东西,但是您的Product和Order对象的结构不是很清楚。(您可能还需要一些空检查。)
OrderDetails orderDetails = Database.GetOrderDetails().First();
List<Product> products = Database.GetProducts();
var name = products.First(p => p.ProductID == orderDetails.ProductID).ProductName;
为什么x.ProductName
与orderDetail.ProductID
在这里匹配:Product product = products.FirstOrDefault(x => == orderDetail.ProductID);
?如果您试图获取与orderDetail的ProductID
匹配的产品列表的产品,则只需这样做:
Product product = products.FirstOrDefault(x => x.ProductID == orderDetail.ProductID);
当然,如果Product
和orderDetail
对象的类具有相同的.ProductID
属性。还是我误会了什么?
修改前面的查询,我猜您需要的结果如下。该查询将返回productid同时存在于两个列表中的所有产品名称。有两种方法可以实现这个结果集。
List<orderDetail> orderDetails = Database.getOrderDetails();
List<Product> products = Database.getProducts();
// This is a SQL like query
var productNames = from ord in orderDetails
join pr in products
on ord.ProductID equals pr.ProductID
select pr.ProductName;
Alternativey, You can also use `Join()`
//This is extention method query
var productNames = orderDetails.Join(products,
ord => ord.ProductID,
pr => pr.ProductID,
(orderdetail, productdetail) => productdetail.ProductName);