如何从 linq 返回特定列表结果到实体

发布于 2024-10-19 07:54:03 字数 1416 浏览 1 评论 0原文

专家您好 我当前编写此代码:

public IList<TResult> GetCustomQuery<TResult>(int orderID, Func<Order, TResult> selector) 
    {
        using(RepositoryDataContext = new NorthwindEntities())
        {
            IList<TResult> res = (from od in RepositoryDataContext.Order_Details
                                  join o in RepositoryDataContext.Orders
                                      on od.OrderID equals o.OrderID
                                  join p in RepositoryDataContext.Products
                                      on od.ProductID equals p.ProductID
                                  join c in RepositoryDataContext.Customers
                                      on o.CustomerID equals c.CustomerID
                                  where o.OrderID > orderID
                                  select new
                                  {
                                      o.OrderID,
                                      od.UnitPrice,
                                      od.Quantity,
                                      p.ProductName,
                                      c.CompanyName
                                  }).Select<Order, TResult>(selector).ToList();
        }
    }

我想以特定格式(TResult)将 linq 的结果返回到实体。 由于连接的存在,使用 Lambda 表达式编写此代码很困难。 此行有例外:选择 订单,TResult> (选择器) 我该如何解决这个问题? 谢谢

Hi Experts
I currenly write this code:

public IList<TResult> GetCustomQuery<TResult>(int orderID, Func<Order, TResult> selector) 
    {
        using(RepositoryDataContext = new NorthwindEntities())
        {
            IList<TResult> res = (from od in RepositoryDataContext.Order_Details
                                  join o in RepositoryDataContext.Orders
                                      on od.OrderID equals o.OrderID
                                  join p in RepositoryDataContext.Products
                                      on od.ProductID equals p.ProductID
                                  join c in RepositoryDataContext.Customers
                                      on o.CustomerID equals c.CustomerID
                                  where o.OrderID > orderID
                                  select new
                                  {
                                      o.OrderID,
                                      od.UnitPrice,
                                      od.Quantity,
                                      p.ProductName,
                                      c.CompanyName
                                  }).Select<Order, TResult>(selector).ToList();
        }
    }

I want to return result of my linq to entities in specific format(TResult).
writing this code using Lambda Expression is hard because of joins.
this line has exception :Select < Order, TResult > (selector)
how I can Fix that?
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

椒妓 2024-10-26 07:54:03

不要创建匿名类型,而是创建 POCO 或在您的情况下创建订单

select new Order()
{
 OrderProperty1 = o.OrderID,
 OrderProperty2 = od.UnitPrice,
 OrderProperty3 = od.Quantity,
 OrderProperty4 = p.ProductName,
 OrderProperty5 = c.CompanyName
}).Select<Order, TResult>(selector).ToList();

Instead of creating an Anonymous type, create a POCO or in your case an Order

select new Order()
{
 OrderProperty1 = o.OrderID,
 OrderProperty2 = od.UnitPrice,
 OrderProperty3 = od.Quantity,
 OrderProperty4 = p.ProductName,
 OrderProperty5 = c.CompanyName
}).Select<Order, TResult>(selector).ToList();
寂寞美少年 2024-10-26 07:54:03

在倒数第二行中:尝试在 Select() 之前调用 ToList() 。像这样:

}).ToList().Select<Order, TResult>(selector);

In your second last line: Try to call ToList() before the Select(). Like this:

}).ToList().Select<Order, TResult>(selector);
微暖i 2024-10-26 07:54:03

是否可以迭代“res”并返回 TResult 列表?

Is it possible Iterate "res" and return a list of TResult?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文