我有一个查询,选择一些值。代码是:
var query = from c in snd.external_invoices.OrderByDescending(x => x.date)
join o in snd.invoices on c.idexternal_invoices equals o.id_external_invoice
select new
{
c.idexternal_invoices,
c.businessname,
o.number,
c.message,
c.price,
c.date,
c.tipologiaPagamento,
c.esitoPagamento,
c.iduser
};
现在,我需要根据字段c.tipologiaPagamento中的值在此查询中选择一些值。特别是,我需要选择c.date等于此开关结果的所有值:
switch (c.tipologiaPagamento)
{
case "1":
c.date.AddDays(10);
break;
case "2":
c.date.AddDays(10);
break;
case "3":
DateTime endOfMonth = new DateTime(c.date.Year,
c.date.Month,
DateTime.DaysInMonth(c.date.Year,
c.date.Month));
c.date = endOfMonth;
break;
case "4":
DateTime nextMonth = c.date.AddMonths(1);
DateTime endOfNextMonth = new DateTime(c.date.Year,
c.date.Month,
DateTime.DaysInMonth(c.date.Year,
c.date.Month));
c.date = endOfNextMonth;
break;
default:
break;
}
所以我需要在查询中选择c.date等于此开关结果的值。
我怎样才能做到这一点?
谢谢大家
我不确定您是否可以像ou want这样轻松地将复杂的计算传递到linq表达式中?如果我错了,有人可以解决我。
我可能会做些什么,因为您的计算仅取决于您的tipologiaPagamento
值,并且date
仅在计算中使用该值(无论如何,您在当前结果集中已拥有该值),而不会打扰自己在SQL端这样做。只需获取所有必需的信息,然后将switch语句放入foreach
循环中即可根据需要在应用程序服务器级别更新值。可能比SQL Server更快地执行计算,SQL Server不一定针对数据操作进行了优化,但对于数据检索则进行了更多优化。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句