读书人

为啥?用Linq排序的时候,int 类型字段可

发布时间: 2013-07-11 15:38:46 作者: rapoo

为何?用Linq排序的时候,int 类型字段可以...但是 float类型不行?何解?


字段定义:
为啥?用Linq排序的时候,int 类型字段可以.但是 float类型不行?何解

[解决办法]
数据库的float和C#里的float也不是一个float啊
------解决方案--------------------


不是float排序不行,而是你的字段没办法转换成float的。
[解决办法]
对table没有好感~~
为什么不用实体类呢~
[解决办法]
SQL Server类型与C#类型对应关系
http://www.cnblogs.com/abllyboy/archive/2010/11/11/1875122.html
[解决办法]

引用:
Quote: 引用:

对table没有好感~~
为什么不用实体类呢~


你是说 那个 LinqToSQLServer的 .dbml 类么?
Table不好么?


ORM是个概念; Linq to sql其中的一种实现,LinqToSql已经不更新了,有更强大的EntityFramwork;
也可以自己简单第实现ORM,如下
public static List<Entity> GetData()
{
const string sql = "";

List<Entity> list = new List<Entity>();
using (SqlConnection conn = new SqlConnection(GlobalSetting.ConnectionString))
{
conn.Open();

SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Entity entity = new Entity();
entity.ID = Guid.Parse(dr["ID"].ToString());
....//这部分可以使用CodeSmith生成

list.Add(entity);
}
}

return list;


}

返回的是强类型的数据集合,比Table好多~
可以看看我科普的帖子
http://bbs.csdn.net/topics/390435776



[解决办法]

引用:
不是float排序不行,而是你的字段没办法转换成float的。
+1
[解决办法]
引用:
貌似,数据库中的float 是对应C#中的 double...
而C#中的float,数据库中没有对应的类型....

这倒也不是,主要是两种类型的精确度不一样
当数据类型是Numeric(10, 6)这种时,应该就可以转成C#中的float,主要是精确度以及数值范围
[解决办法]
断点查看那个列的实际数据类型,不要想当然地转换,在不知道实际类型的情况下,你直接Cast<object>,然后用object排序也可以的。
[解决办法]
个人觉得你数据库设计都有问题。Fprice既然是表示价格金额,就不应该用float类型,应该用decimal或者Number

读书人网 >C#

热点推荐