下面的LINQ查询无需.ToString("N2")部分即可正常运行。使用.ToString()也可以正常工作。当添加("N2")而不是()时,它将不返回任何内容而不会引发任何异常。为什么?

解决方法:在不格式化的情况下打印FundFee数字时,它们将打印为9.00000000e-3。这仅在LINQ查询中发生,CurrentCultureen-US。有什么办法可以将其更改为非电子记号?然后一种解决方法是使用.ToString().SubString(0,4),因为所有数字都在0到1之间,因此可以使用amdw.Log = Console.Out

也欢迎任何其他改进想法:)

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();


编辑(从评论中添加了信息):

在查询前添加以下内容:给出输出:控制台中的System.Data.Linq.dll中发生了类型为'System.NotSupportedException'的第一次机会异常。

最佳答案

LINQ to SQL无法将格式字符串转换为T-SQL。

无需依赖SQL Server格式化字符串,而是将所需的所有数据提取到内存中,然后从那里将数据投影为正确的格式。

一个简单的虚构示例:

// Don't - LtS tries to translate format string to T-SQL
var formattedFundFeess = from fund in Context.Funds
                         select fund.Fee.ToString("N2");

// Do - fetch your fees into memory and let .NET do the format
var fundFeesInMemory = (from fund in Context.Funds
                        select fund.Fee).ToList();

var formattedFundFees = from fundFee in fundFeesInMemory
                        select fundFee.ToString("N2");

关于c# - LINQ-ToString(“N2”)毫无异常(exception)地失败了吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8939818/

10-17 01:44