从使用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
有人帮助我..
答案 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并给你你想要的东西。