Linq查询表达式

本文关键字:表达式 查询表 查询 Linq | 更新日期: 2023-09-27 18:15:07

我正在编写一个生成匿名结果集的连接查询。我的问题是,我不知道哪种数据类型应该从我的函数服务返回,我试图返回对象类型,但我不知道如何访问结果的元素在我的源代码…

下面是我的代码:
 public static IEnumerable<object> GetProductSalesInfoById(int id)
 {
     var query = from product in database.Products
         join sales in database.SalesOrderDetails
             on product.ProductID equals sales.ProductID
         select new  {Name = product.Name,OrderId = sales.SalesOrderID,TotalPrice = (sales.UnitPriceDiscount)*sales.OrderQty*sales.UnitPrice};
     IEnumerable<object> result = query.ToList();
     return result;
 } 

Linq查询表达式

您应该创建一个包含匿名对象属性的DTO类,并返回它的IEnumerable<T>。另一个不太好的解决方案是使用dynamic,但我不会使用它

创建一个这样的自定义类

public partial class ResultClass
    {
     public string Name {get;set;}
     public int OrderId {get;set;}
     public double TotalPrice {get;set;}
    }
public List<ResultClass>  GetProductSalesInfoById(int id)
 {
     var query = from product in database.Products
         join sales in database.SalesOrderDetails
             on product.ProductID equals sales.ProductID
         select new ResultClass {Name = product.Name,OrderId = sales.SalesOrderID,TotalPrice = (sales.UnitPriceDiscount)*sales.OrderQty*sales.UnitPrice};

     return result.ToList();
 } 

您可以使用Tuple或匿名类型(您需要使用强制类型转换来返回对象)。请查看此链接以使用:匿名&元组对象