c# - How to write just one query to divide result from 2 query?
问题描述
I have a query in Entity Framework Core like below:
var currencyRate = await AsyncExecuter.FirstOrDefaultAsync(
from exchangeRate in await _exchangeRateRepository.GetQueryableAsync()
where exchangeRate.CurrencyId == input.SelectedCurrencyId &&
exchangeRate.FirmId == input.FirmId &&
(exchangeRate.BeginDate <= input.ProcessDate && exchangeRate.EndDate >= input.ProcessDate)
select exchangeRate.CurrencyRate);
currencyRate = currencyRate / (await AsyncExecuter.FirstOrDefaultAsync(
from exchangeRate in await _exchangeRateRepository.GetQueryableAsync()
where exchangeRate.CurrencyId == input.CurrencyId &&
exchangeRate.FirmId == input.FirmId &&
(exchangeRate.BeginDate <= input.ProcessDate && exchangeRate.EndDate >= input.ProcessDate)
select exchangeRate.CurrencyRate));
I am dividing one currencyRate to another from 2 queries. There are 2 select queries. Only difference between queries is where condition. How to do this in one select query?
解决方案
拉两行
where (exchangeRate.CurrencyId == input.CurrencyId || exchangeRate.CurrencyId == input.SelectedCurrencyId)
把一个明确的顺序放在喜欢上
order by exchangeRate.CurrencyId == input.CurrencyId ? 0 : 1
现在您知道返回的两行是 (currencyid, selectedcurrencyid) 顺序,因此您可以例如 ToArray 它们并执行array[1] / array[0]