2016-06-27 4 views
1

にリンクされています.LINQを使用してリストからProductidと一致するリストからproductnameを取得しようとしていますが、運がありません。C#他のリストからの値が値

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

あなたが求めていることは本当に明確ではありません。あなたは言い換えることができますか? –

+0

4番目のステートメントのlamba式で 'OrderID'とは何ですか? – JamesFaix

+0

'Productname'はこの行のプロパティです:' Convert.ToString(Productname); '。それは 'product'のプロパティなので、' product.Productname'はあなたが望むことをするでしょうか?それとも私は誤解していますか? –

答えて

2

私はこのようなものが欲しいと思いますが、ProductオブジェクトとOrderオブジェクトがどのように構造化されているかはあまり明確ではありません。 (あなたはおそらくいくつかのヌルチェックが必要です)。

OrderDetails orderDetails = Database.GetOrderDetails().First(); 
List<Product> products = Database.GetProducts(); 

var name = products.First(p => p.ProductID == orderDetails.ProductID).ProductName; 
+0

それは私にエラーを与えます:暗黙的にタイプ 'int'を 'bool'に変換できません – iub3rskillz

+0

申し訳ありません、私は '=='を意味するラムダで '='を使用しました。このスイッチで試してみてください – JamesFaix

+0

これは、私が探していた魅力のように機能します。 – iub3rskillz

0

ここorderDetail.ProductIDx.ProductNameに一致する理由:Product product = products.FirstOrDefault(x => == orderDetail.ProductID);?当然の

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

場合は、両方Productと:あなたのorderDetailのProductIDと一致する製品とのリストの製品を取得しようとしている場合は、ちょうどそのようにそれを行う必要があるでしょう あなたのorderDetailオブジェクトのクラスは同じ.ProductIDプロパティを持っています。 または私は何かを忘れましたか?

-2

前のクエリを変更すると、次のように結果が必要になることがあります。 このクエリは、両方のリストにproductidが存在するすべての製品名を返します。 この結果セットを達成するには2通りの方法があります。

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

結果セットが必要なときにクエリを変更する –

関連する問題