у меня есть C# код следующимДля многих вложенных инструкций
var deptSalesQuery =
from d in db.DashboardFigures
join s in outlets.Split(',').Select(x => int.Parse(x)) on d.OutletNo equals s
where (d.TypeOfinformation == "SALES")
group d by new
{
d.Number
} into newGroupedresult
select new DeptSales()
{
Dn = (int)newGroupedresult.Key.Number,
Qs = (double)newGroupedresult.Sum(d => d.Value_4),
Se = (double)newGroupedresult.Sum(d => d.Value_2),
Si = (double)newGroupedresult.Sum(d => d.Value_3)
+ (double)newGroupedresult.Sum(d => d.Value_2)
};
Когда я прохожу в Outlets = «1,2,3,4, .... весь путь Шифрование до 110», программное обеспечение выходит из строя говоря, что слишком много вложенных утверждений.
Есть ли способ удалить JOIN и добавить что-то в предложение WHERE, чтобы помочь ситуации?
Благодаря
Вы можете использовать 'метод Contains' если' точек для проверки .Split (','). Выберите (x => int.Parse (x)) 'содержит' d.OutletNo' –
Что-то вроде 'where outlets.Split (','). Выберите (int.Parsex) .Contains (d.OutletNo) && d.TypeOfinformation == "ПРОДАЖИ" ' – xanatos
В EF не существует максимального предела для 'Contains' (http://stackoverflow.com/questions/8898564/entity-framework-hitting-2100-parameter-limit). Вы используете EF или Linq-to-SQL? – xanatos