2012-02-02 38 views
1

我有一個元素產品的XML文件,其中包含名稱和價格$。我想選擇名稱和$價格,但我想在我計算的歐元價格的字段中添加。我該怎麼做呢?謝謝。如何使用LINQ進行「複合」選擇?

我當前的查詢是:

var queryAllProducts = from product in products 
        select product; 

回答

2

假設product有場NamePriceUsd,而且你也有一個功能叫做UsdToEuro,你可以做你的選擇如下:

var queryAllProducts = from product in products 
    select new { 
     product.Name 
    , product.PriceUsd 
    , PriceEuro = UsdToEuro(product.PriceUsd) 
    }; 

如果你不想「爆發」產品的各個領域,你可以通過完整的匿名類型:

var queryAllProducts = from product in products 
    select new { 
     Product = product 
    , PriceEuro = UsdToEuro(product.PriceUsd) 
    }; 

您可以從element.Product.Name訪問產品字段,而不是第一個示例中的element.Name。在價格添加

+0

非常感謝!這將工作。但是我想知道是否有一種簡單的方式來處理元素產品,如果它有100個子元素而不是2個Name和PriceUsd。我寧願不必拼寫出每個子元素。 – user763554 2012-02-02 03:56:01

+0

@ user763554當然,你可以輕鬆地做到這一點。我更新了答案以包含此替代方案。 – dasblinkenlight 2012-02-02 04:01:21

1

一種方法是從你的LINQ查詢返回一個匿名類型:

var queryAllProducts = from product in products 
         select new { 
          Name = product.Name, 
          Price = product.Price, 
          PriceEuro = ConvertToEuroPrice(product.Price) 
         }; 

另一種方式來添加屬性,如果Product類定義爲partial類,是隻將PriceEuro屬性添加到該類。

public partial class Product 
{ 
    public decimal PriceEuro 
    { 
     get { return ConvertToEuroPrice(Price); } 
    } 
}