Linq - 将行添加到结果中仅供显示

时间:2009-03-14 15:21:36

标签: linq-to-sql

我有一个linq查询,它返回一个简短的订单摘要 - 产品描述和产品价格绑定到数据控件。我想在显示税务信息的同一控件中添加要绑定的行。产品说明列只会说“税”,产品价格列会给出税额。

我曾经检索过这些结果的DataTable,只需执行一个NewRow(),然后将我的控件的数据源设置为DataTable。我正在寻找使用LINQ to SQL时的等效技术。感谢。

2 个答案:

答案 0 :(得分:3)

orderSummary.Union(taxRow)

答案 1 :(得分:1)

为了便于在LINQ查询的结果中添加另一个“行”,您可能需要考虑创建一个类来保存查询结果。然后,您可以将结果转换为List,计算税收,并将税收作为该类的对象附加。

public class OrderSummary
{
    public string Description { get; set; }
    public decimal Amount { get; set; }
}


var taxRate = ...
var orderSummary = db.Orders.Where( o => o.ID == id )
                            .Select( o => new OrderSummary
                                {
                                    Description = o.Product
                                                   .Details
                                                   .Description,
                                    Amount = o.Qty * o.Product.Price
                                })
                            .ToList();

var tax = new OrderSummary
              {
                  Description = "Tax",
                  Amount = orderSummary.Sum( o => o.Amount * taxRate );
              };
orderSummary.Add( tax );

然后,您可以使用Description作为键并将Amount作为值将列表绑定到您的控件。