1

我有这个代码

private CurrencyConversionResult GetNumberOfCurrencyUnitsPerEuro(CurrencyType from, CurrencyType to)
        {
            ...

            IEnumerable<ExchangeRate> rate = info.ExchangeRates.Where(e => e.CurrencySymbol == from.ToString() || e.CurrencySymbol == to.ToString()).ToList();
            ...

我想将此方法的签名更改为

private CurrencyConversionResult GetNumberOfCurrencyUnitsPerEuro(IEnumerable<CurrencyType> from, CurrencyType to)

所以,我现在要做的是获取 e.CurrencySymbol 等于to或任何froms. 问题是我不知道如何在一个语句中写入,以便只有 1 个数据库调用。有任何想法吗?

4

1 回答 1

1
var symbols = from.Select(f => f.ToString());
var rate = info.ExchangeRates
               .Where(e => symbols.Contains(e.CurrencySymbol) || 
                           e.CurrencySymbol == to.ToString())
               .ToList();

不确定 Any 是否可以被 EF 翻译(它不适用于使用 Linq to SQL 的本地序列),但您也可以尝试:

var rate = info.ExchangeRates
               .Where(e => from.Any(f => e.CurrencySymbol == f.ToString()) || 
                           e.CurrencySymbol == to.ToString())
               .ToList();
于 2013-09-13T09:55:51.003 回答