我有一個元素產品的XML文件,其中包含名稱和價格$。我想選擇名稱和$價格,但我想在我計算的歐元價格的字段中添加。我該怎麼做呢?謝謝。如何使用LINQ進行「複合」選擇?
我當前的查詢是:
var queryAllProducts = from product in products
select product;
我有一個元素產品的XML文件,其中包含名稱和價格$。我想選擇名稱和$價格,但我想在我計算的歐元價格的字段中添加。我該怎麼做呢?謝謝。如何使用LINQ進行「複合」選擇?
我當前的查詢是:
var queryAllProducts = from product in products
select product;
假設product
有場Name
和PriceUsd
,而且你也有一個功能叫做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
。在價格添加
一種方法是從你的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); }
}
}
非常感謝!這將工作。但是我想知道是否有一種簡單的方式來處理元素產品,如果它有100個子元素而不是2個Name和PriceUsd。我寧願不必拼寫出每個子元素。 – user763554 2012-02-02 03:56:01
@ user763554當然,你可以輕鬆地做到這一點。我更新了答案以包含此替代方案。 – dasblinkenlight 2012-02-02 04:01:21