从开关案例中在Linq中添加条件值

罗伯托·明多利(Roberto Mindoli)

我有一个查询,选择一些值。代码是:

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等于此开关结果的值。

我怎样才能做到这一点?

谢谢大家

萨巴·本科(Csaba Benko)

我不确定您是否可以像ou want这样轻松地将复杂的计算传递到linq表达式中?如果我错了,有人可以解决我。

我可能会做些什么,因为您的计算仅取决于您的tipologiaPagamento值,并且date仅在计算中使用该值(无论如何,您在当前结果集中已拥有该值),而不会打扰自己在SQL端这样做。只需获取所有必需的信息,然后将switch语句放入foreach循环中即可根据需要在应用程序服务器级别更新值。可能比SQL Server更快地执行计算,SQL Server不一定针对数据操作进行了优化,但对于数据检索则进行了更多优化。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章