Linq-запрос с несколькими условиями - PullRequest
0 голосов
/ 01 марта 2012

как написать запрос linq с этими условиями. Сначала мы должны проверить OrderType, если это правда, тогда и условие должно быть проверено. Как написать запрос ... если я закрою условие в .OrderType.XYZ) тогда он говорит, что 'zj' не принадлежит текущему контексту .. если мы удалим это без ошибки, но мы не получим результат req

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem }).
   .Where((zj => wo.OrderId== (int)BL.OrderType.PQR || zj.OrderId== (int)BL.OrderType.XYZ)
           &&( zj.OrderId== (int)BL.Statuses.Assigned
             || zj.OrderId== (int)BL.Statuses.Planned 
             || zj.OrderId== (int)BL.Statuses.InProgess
             || zj.OrderId== (int)BL.Statuses.Paused 
             || zj.OrderId== (int)BL.Statuses.Ready)).Any();
return btnEnable; 

Ответы [ 3 ]

2 голосов
/ 01 марта 2012
var readyStats = new [] {
   (int)BL.Statuses.Assigned,
   (int)BL.Statuses.Planned,
   (int)BL.Statuses.InProgess,
   (int)BL.Statuses.Paused,
   (int)BL.Statuses.Ready,
};

var orderTypes = new [] {
    (int)BL.OrderType.PQR,
    (int)BL.OrderType.XYZ
}

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem }).
   .Where(wo => orderTypes.Contains(wo.OrderId) && readyStats.Contains(wo.OrderId)).Any();

или

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem }).
       .Any(wo => orderTypes.Contains(wo.OrderId) && readyStats.Contains(wo.OrderId));

Я думаю, что проблема здесь:

.Where((zj => wo.

Правильная версия должна быть:

   .Where(zj => zj.
2 голосов
/ 01 марта 2012

Похоже, у вас проблема с несовпадающими скобками.

.Where((zj => wo.OrderId== (int)BL.OrderType.PQR || zj.OrderId== (int)BL.OrderType.XYZ) 
       ^                                                                              ^

Это смешно с областью действия вашей переменной. Пересмотреть это.

2 голосов
/ 01 марта 2012

Я думаю, это связано с неуместными скобками.У вас есть .Where((zj => ...) ... zj ...).Переменная zj не существует вне первого набора скобок.Это должно быть что-то вроде:

bool btnvisible= datacontext.GetOrders(new List<Items> { selectedItem })
   .Where(zj => (wo.OrderId== (int)BL.OrderType.PQR || zj.OrderId== (int)BL.OrderType.XYZ)
           && (zj.OrderId== (int)BL.Statuses.Assigned
             || zj.OrderId== (int)BL.Statuses.Planned 
             || zj.OrderId== (int)BL.Statuses.InProgess
             || zj.OrderId== (int)BL.Statuses.Paused 
             || zj.OrderId== (int)BL.Statuses.Ready)).Any();
return btnEnable; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...