В блоке кода у меня есть Foreach, который я использую для запуска и подсчета конкретных фрагментов, которые могут или не могут существовать в базе данных. В основном для каждой части заказа, я продолжаю подсчитывать группы продуктов, к которым относятся, а затем к подразделению, к которым принадлежат эти группы продуктов. Для этого я использую этот LINQ запрос:Запрос LINQ, не возвращающий одно значение, которое должно быть там
foreach (var OrderDtl_yRow in (from ThisOrderDtl in Db.OrderDtl
join ThisProdGrup in Db.ProdGrup on
ThisOrderDtl.ProdCode equals ThisProdGrup.ProdCode
where
ThisOrderDtl.Company == Session.CompanyID &&
ThisOrderDtl.OrderNum == 195792
select new
{
ProdCode = ThisOrderDtl.ProdCode,
Division = ThisProdGrup.Division_c,
OrderNum = ThisOrderDtl.OrderNum,
OrderLine = ThisOrderDtl.OrderLine
}))
{ ....counting things... }
В настоящее время у меня есть окна сообщений, установленных для возврата значения для меня, как этот процесс происходит. Я получаю все, чтобы вернуться правильно, кроме раздела, который всегда отображается как пустой в MessageBoxes (так что NULL я бы предположил). Так что мои счетчики для дивизии не прибавляют.
Если я что из в LINQPad я не уверен, как вернуть результаты Еогеасп, но я попробовал его с
if(OrderDtl_yRow.Division != null && OrderDtl_yRow.Division != "")
{i++;}
i.Dump();
и получил 5 (Были 5 строк я ожидал, так что я в наименее тянет наше что-то). Потом я преобразовал его в более простом заявлении FirstOrDefault, чтобы проверить одно значение, как
var OrderDtl_yRow = (from ThisOrderDtl in OrderDtl
join ThisProdGrup in ProdGrup on
ThisOrderDtl.ProdCode equals ThisProdGrup.ProdCode
where
ThisOrderDtl.OrderNum == 195792 &&
ThisOrderDtl.OrderLine == 1
select new
{
ProdCode = ThisOrderDtl.ProdCode,
Division = ThisProdGrup.Division_c,
OrderNum = ThisOrderDtl.OrderNum,
OrderLine = ThisOrderDtl.OrderLine
}).FirstOrDefault();
Тогда, если я делаю OrderDtl_yRow.Dump() я получаю мой результат и достаточно точно, Отдел проступает. Таким образом, все признаки указывают на то, что это нормально, но я не могу принести значение, в котором я действительно нуждаюсь в нем. Мысли? Благодаря!
P.S. Для тех, кто знаком с Epicor ERP Division, является полем UD, поэтому он технически относится к таблице ProdGrup_UD, но в Epicor он признал, что, поскольку таблица ProdGrup просто прекрасна, ее единственный SQL, который заставляет вас присоединиться к _UD к родительской таблице. Я пытался присоединиться к нему в любом случае для funsies, и ему это не понравилось, потому что он знал, что колонка уже там. Так что все должно быть хорошо.
UPDATE: Rookie Move, не загружал данные отдела в тестовую среду, поэтому ничего не было, а затем проверял данные Live там, где они существовали, и поцарапал голову о том, почему это не соответствует. Но я кое-что узнал о LinqPad и Linq, поэтому это не было бесполезным упражнением.
Благодарим за внимание! Я еще не много играл в LinqPad. Я помню этот кусочек теперь, когда ты упоминаешь об этом. Я сделал так, как вы предлагали, и он отлично подбирает данные отдела. Я не знаю, где разрыв между результатами, которые я могу видеть, и работать с Epicor ... hmm ... – BWoods
Или я просто идиот. Я забыл, что не загружал эти данные в нашу систему Dev, где я тестирую код в Epicor. Естественно, я использую Live, чтобы просто потянуться и посмотреть на данные и почесывать голову о том, почему это не соответствует ... Ошибки новичков. Но спасибо за ваш ответ, это, по крайней мере, сделало LinqPad более полезным для меня, чтобы получить прибыль. – BWoods