首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2013-07-11 
为何?用Linq排序的时候,int 类型字段可以...但是 float类型不行?何解?字段定义:[解决办法]数据库的float和

为何?用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

热点排行