2016-06-27 4 views
1

Ich versuche, den Produktnamen aus der Liste zu holen, wo er mit der Produkt-ID aus der Liste mit LINQ übereinstimmt, aber ich habe kein Glück.C# -Wert von einer anderen Liste, die mit Wert verknüpft ist

Die ProductID ist in beiden Listen und es sollte irgendwie verknüpft werden.

Ich habe versucht:

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

Es ist nicht wirklich klar, was Sie fragen. Kannst du es umformulieren? –

+0

Was ist 'OrderID' im Lamba-Ausdruck in Ihrer 4. Anweisung? – JamesFaix

+0

Was ist 'Produktname' eine Eigenschaft von in dieser Zeile:' Convert.ToString (Productname); '. Ist es eine Eigenschaft von 'product', so dass' product.Productname' tun würde, was Sie wollen? Oder verstehe ich das falsch? –

Antwort

2

Ich denke, Sie wollen so etwas, aber es ist nicht sehr klar, wie Ihre Produkte und Bestellung Objekte strukturiert sind. (Sie werden wahrscheinlich auch einige Null-Checks wünschen.)

+0

Es gibt mir den Fehler: Kann Typ 'int' implizit nicht in 'bool' konvertieren – iub3rskillz

+0

Sorry, ich habe '=' in der Lambda, wo ich meinte '=='. Versuchen Sie es mit dem Switched – JamesFaix

+0

Dies funktioniert wie ein Charme, genau das, was ich gesucht habe. – iub3rskillz

0

Warum hier x.ProductName mit orderDetail.ProductID passend: Product product = products.FirstOrDefault(x => == orderDetail.ProductID);? Wenn Sie versuchen, das Produkt aus der Liste mit den Produkten zu erhalten, welche die ProductID Ihrer Orderdetail übereinstimmt, werden Sie es gerade zu tun haben, wie folgt aus:

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

Wenn natürlich beide Product und Die Klasse Ihres orderDetail Objekts hat dieselbe .ProductID Eigenschaft. Oder habe ich etwas falsch verstanden?

-2

Ändern Sie die frühere Abfrage, ich brauche Sie die Ergebnisse wie folgt. Diese Abfrage gibt alle Produktnamen zurück, deren Produkt-ID in der Liste vorhanden ist. Es gibt zwei Möglichkeiten, wie wir diese Ergebnismenge erreichen können.

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); 
+0

Ändern Sie die Abfrage, da Sie die Ergebnismenge benötigen –

Verwandte Themen