Если проблема действительно связана с использованием анонимных типов, вы можете просто создать именованный тип.
public class BatchKey
{
public int BatchId {get;set;}
...
}
...
group a by new BatchKey
{
BatchId = a.BATCH_ID,
...
Однако это сообщение об ошибке является своего рода загадочным, и я не уверенэто имеет какое-либо отношение к анонимным типам.Я бы посоветовал разбирать ваш запрос по частям, пока у вас не будет минимума, который воспроизводит ошибку.Таким образом, вы будете гораздо более уверены, что является причиной проблемы.
Возможно, вы захотите добавить OrderBy
перед вашим Take
, поскольку некоторые поставщики требуют, чтобы набор данных был упорядочен по порядку.выполнить Take
.Возможно, вы также захотите оценить, что вы можете сделать за пределами вашего запроса:
IQueryable<WIP> wips = WIP.Where(a => a.STATUSCODE != "X" && a.KEY1 != "CABS" && a.KEY1 != "BPI");
if (dtFrom.HasValue) {
wips = docs.Where(a => a.QBE_DT.Value >= dtFrom.Value);
}
if (dtTo.HasValue) {
wips = docs.Where(a => a.QBE_DT.Value <= dtTo.Value);
}
var docs = from a in wips
group a by ...
Я полагаю, что вы сможете настроить LINQPad для использования вашего поставщика DB2 и увидеть производимые операторы SQL.(Но эта ошибка выглядит так, как будто она произошла до того, как сгенерирован оператор SQL).