我有一个元素产品的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