일부 값을 선택하는 쿼리가 있습니다. 코드는 다음과 같습니다.
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가이 스위치의 결과와 같은 값을 선택해야합니다.
어떻게 할 수 있습니까?
모두에게 감사합니다
linq 표현식에 쉽게 원하는 것과 같은 복잡한 계산을 전달할 수 있는지 잘 모르겠습니다. 내가 잘못하면 누군가 나를 고칠 수 있습니다.
아마도 당신의 계산은 당신의 tipologiaPagamento
값에만 의존 date
하고 계산에만 값을 사용 하기 때문에 내가 할 일은 SQL 측에서 그렇게하는 것을 귀찮게하지 않고 현재 결과 세트에있는 계산에만 사용합니다 . 필요한 모든 정보를 얻고 스위치 문을 foreach
루프에 넣어 필요 에 따라 애플리케이션 서버 수준에서 값을 업데이트하기 만하면 됩니다. 아마도 데이터 조작에 반드시 최적화되어 있지는 않지만 데이터 검색에 더 많은 SQL 서버보다 빠르게 계산을 수행 할 수있을 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다