我试图从List获取productname,它使用LINQ匹配List的Productid,但我没有运气。
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);
答案 0 :(得分:2)
我认为你想要这样的东西,但是产品和订单对象的结构并不是很清楚。 (你也可能想要一些空检查。)
OrderDetails orderDetails = Database.GetOrderDetails().First();
List<Product> products = Database.GetProducts();
var name = products.First(p => p.ProductID == orderDetails.ProductID).ProductName;
答案 1 :(得分:0)
为什么在这里将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
属性。
或者我错过了一些东西?
答案 2 :(得分:-2)
修改先前的查询,我知道您需要如下结果。 此查询将返回列表中存在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);