在String中转换SQL double

时间:2012-10-05 09:41:37

标签: c# asp.net string linq

从使用linq获取double值并将其转换为string时出现问题。我的代码是: -

 public List<ShowDataOnClient> GetCardListToShow()
    {
        try
        {
            List<ShowDataOnClient> CardList = new List<ShowDataOnClient>();
            using (ProgressCardLINQDataContext c = new ProgressCardLINQDataContext())
            {
                CardList = (from card in c.GetTable<T_PROGRESSCARD>()
                            where card.RecordStatus.Equals(RecordStatus.Active)
                            select new ShowDataOnClient
                            {
                                Student=(from student in c.T_STUDENTs
                                         where student.Id.Equals(card.StudentId)
                                         select student.Name).Single().ToString(),
                                Test=(from test in c.T_TESTs
                                      where test.Id.Equals(card.TestId)
                                      select test.Name).Single().ToString(),
                                MaxMarks = (from test in c.T_TESTs
                                            where test.Id.Equals(card.TestId)
                                            select test.MaxMarks).Single().ToString(),
                                MarksObtain=card.MarksObtain.ToString(),
                                Percentage=card.Percentage.ToString()

                            }).ToList<ShowDataOnClient>();
            }
            return CardList;
        }
        catch
        {
            return new List<ShowDataOnClient>();
        }
    }

我也试过这个: -

 Percentage=Math.Truncate(card.Percentage).ToString()

当我在ToString中传递“N2”时,它给出异常“方法”System.String ToString(System.String)'没有支持的SQL转换。“

和转换后得到的值是这样的: - 5.200000000000000e + 001

有人帮助我..

2 个答案:

答案 0 :(得分:2)

您的ShowDataOnClient课程应将Percentage的值存储为double。您可以格式化后续阶段向用户显示双精度的方式。如何操作取决于您用于显示数据的控件。

这有一个额外的好处,即排序功能可以按预期工作。如果您提前将百分比转换为字符串,则按该列排序看起来不正确

% as String     % as double
1%              1%
10%             2%
11%             10%
2%              11%
23%             23%
etc.            etc.

答案 1 :(得分:0)

试试这个:

double Percentage = card.Percentage;

string PercentageStr = Percentage.ToString();

这不会调用linq到sql并给你你想要的东西。