Запрос LINQ ниже работает нормально без части .ToString("N2")
. Он также отлично работает, используя .ToString()
. При добавлении ("N2")
вместо ()
он ничего не возвращает без каких-либо исключений. Почему?
Обходной вопрос: при печати чисел FundFee
без форматирования они печатаются как 9.00000000e-3. Это происходит только в запросах LINQ, CurrentCulture
равно en-US
. Есть ли способ изменить это на не-нотацию? Тогда одним из обходных путей может быть использование .ToString().SubString(0,4)
, которое будет работать, поскольку все числа находятся в диапазоне от 0 до 1.
Любые другие идеи по улучшению также приветствуются:)
List<FundStairItem> listFunds = (from fundInfoISIN in amdw.FundsInfos.Where(f => f.Type == 1)
from fundInfoName in amdw.FundsInfos.Where(f =>f.Type == 2)
from fundFee in amdw.FundFees
from securities in amdw.Securities
where securities.ISIN == fundInfoISIN.Value && fundInfoISIN.Value != null && fundInfoISIN.PortfolioId == fundInfoName.PortfolioId && fundFee.ISIN == securities.ISIN
select new FundStairItem
{
Key = fundInfoISIN.Id,
Name = (fundInfoName.Value != "" && fundInfoISIN.Value != "") ? fundInfoName.Value
+ " " + fundFee.Class.Trim() + " ( Fee: " + (fundFee.Fee*100).ToString("N2") + "% , ISIN:" +fundInfoISIN.Value +")" : securities.Name
}).GroupBy(p=>p.Key).Select(g=>g.First()).ToList();
Редактировать (добавлена информация из комментария):
Добавление этого перед запросом: amdw.Log = Console.Out
дает вывод: Произошло первое исключение типа System.NotSupportedException в System.Data.Linq.dll в консоли.