4

LINQクエスト自体で余分なループを回避して順序を構築する方法。

GetOrderListDataContext orderListDaCtx = new GetOrderListDataContext(address);
// This line showing compiler error could not find implementation of query pattern for source type int Select not found
var orderList = from order in orderListDaCtx.Base_Purchase_GetOrderListByUser_WS(request.UserGuid, request.CountryCode, request.FromDate, request.ToDate)
                select order;
// Here how i can avoid this loop and construct order object in the LINQ itself above                   
List<Order> orders = new List<Order>();
foreach (var order in orderList)
{
    orders.Add(new Order
     {
         OrderKey = order.OrderKey,
         UserEmail = order.UserEmail,
         CreatedDate = order.CreatedDate
     });
}
return orders;
4

4 に答える 4

3

これですか?

GetOrderListDataContext orderListDaCtx = new GetOrderListDataContext(address);
var orderList = from order in orderListDaCtx.Base_Purchase_GetOrderListByUser_WS(request.UserGuid, request.CountryCode, request.FromDate, request.ToDate)
select new Order{
         OrderKey = order.OrderKey,
         UserEmail = order.UserEmail,
         CreatedDate = order.CreatedDate
}

return orderList.ToList();
于 2013-02-21T05:06:03.660 に答える
1

あなたはただ連鎖することができます:

var orders = orderListDaCtx.Base_Purchase_GetOrderListByUser_WS(request.UserGuid, request.CountryCode, request.FromDate, request.ToDate)
                           .Select(order => new Order
                             {
                               OrderKey = order.OrderKey,
                               UserEmail = order.UserEmail,
                               CreatedDate = order.CreatedDate
                             })
                           .ToList();
return orders;
于 2013-02-21T05:29:48.017 に答える
1

コンパイラエラーを示すこの行は、ソースタイプintSelectのクエリパターンの実装が見つかりませんでした

主な問題は、ストアドプロシージャにあります。参照:Linqストアドプロシージャの問題-intを返す

于 2013-02-21T05:31:57.787 に答える
0

LINQエラーを参照してください:

ソースタイプ「Your.Type」のクエリパターンの実装が見つかりませんでした。「選択」が見つかりません。範囲変数のタイプを明示的に指定することを検討してください

orderListDaCtx.Base_Purchase_GetOrderListByUser_WS(request.UserGuid, request.CountryCode, request.FromDate, request.ToDate)タイプ「IEnumerable」を返す可能性がありますが、LINQが必要IEnumerable<T>です。明示的なキャストを実行する必要があります。

var orderList = from Order order in orderListDaCtx.Base_Purchase_GetOrderListByUser_WS(request.UserGuid, request.CountryCode, request.FromDate, request.ToDate)
                select order;

Base_Purchase_GetOrderListByUser_WSのコレクションが返されると思いますOrder

于 2013-02-21T07:45:29.280 に答える