转换字符串中的SQL双精度



使用linq获取双值并将其转换为字符串时遇到问题。我的代码是:-

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。">

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

有人帮我吗

ShowDataOnClient类应将Percentage的值存储为double。您可以格式化在稍后阶段向用户显示替身的方式。如何做到这一点取决于用于显示数据的控件。

这还有一个额外的好处,即排序功能将按预期工作。如果你这么早就把百分比转换成字符串,那么按该列排序看起来就不太合适了

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

试试这个:

double Percentage = card.Percentage;
string PercentageStr = Percentage.ToString();

这不会将linq调用到sql并提供您想要的内容。

最新更新