c#值从另一个列表链接到值



我正试图从列表中获取产品名称,它与使用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.ProductNameorderDetail.ProductID在这里匹配:Product product = products.FirstOrDefault(x => == orderDetail.ProductID); ?如果您试图获取与orderDetail的ProductID匹配的产品列表的产品,则只需这样做:

Product product = products.FirstOrDefault(x => x.ProductID == orderDetail.ProductID);

当然,如果ProductorderDetail对象的类具有相同的.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);

相关内容

  • 没有找到相关文章

最新更新