首页 新闻 赞助 找找看

按泛型拼接sql语句求助

0
悬赏园豆:30 [已解决问题] 解决于 2016-07-30 10:08

开头是想做:我要查询条件都在T model里面,而所有数据都在List<T> ls里面,我想把ls里面满足条件的查询出来。因为解决不了,所以就拼接sql

        class student 
        {
            public string Id { set; get; }
            public string name { set; get; }
            public int age { get; set; }
            public double doub { get; set; }
            public DateTime dt { get; set; }
            public float floa { get; set; }
        }

        static void Main(string[] args)
        {
//这就是我要查询的条件,Id=1,name=zzj student s
= new student { Id = "1", name = "zzj" }; string sql = SearchModel<student>(s); Console.WriteLine( sql ); } /// <summary> /// 按模型拼接sql,返回SQL语句 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="model"></param> /// <returns></returns> public static string SearchModel<T>(T model) { Type t = model.GetType(); string sb = string.Empty; PropertyInfo[] pi = t.GetProperties(); foreach (PropertyInfo p in pi) { if (p.GetValue(model , null) == null) break; sb += " and " + p.Name + "='" + p.GetValue(model , null) + "'"; } return sb; }

 

 

效果是:

and Id='1' and name='zzj' and age='0' and doub='0' and dt='0001/1/1 0:00:00' and floa='0'
请按任意键继续. . .

 

多种属性,他们的初始值不一样,各位大神我解决过这种问题没有?

少时不知贵的主页 少时不知贵 | 初学一级 | 园豆:86
提问于:2016-07-12 16:05
< >
分享
最佳答案
0

defaut(T)可以帮你解决类型不同初始值不一样的问题。

收获园豆:30
happydaily | 菜鸟二级 |园豆:301 | 2016-07-12 16:24

get 谢谢

少时不知贵 | 园豆:86 (初学一级) | 2016-07-13 09:15
其他回答(4)
0

你问大神你解决过这种问题没有,大神也不知道啊,你解决没解决过,只有你自己知道啊。。。

顾晓北 | 园豆:10844 (专家六级) | 2016-07-12 16:08

大神 你不能水经验啊!

我想要的效果就是:如上  在ls集合中 查询 满足 T model (上里面有值的属性就是我要查询的条件:Id=1,name=zzj)

支持(0) 反对(0) 少时不知贵 | 园豆:86 (初学一级) | 2016-07-13 09:08
0

ha哈哈

问题是你是要多什么做查询?是对一个list做查询?那直接用linq不就好了'

如果是要数据库查询语句.那你这个不已经返回了?

吴瑞祥 | 园豆:29449 (高人七级) | 2016-07-12 16:19

比如上面学生模型里面有6个属性,如果里面5个属性有值的话,就是要查询那个5个属性的条件。如果要linq就要写死哪个属性(x=>x.?)。我想用泛型的话,就可以适应多种条件查询了,

支持(0) 反对(0) 少时不知贵 | 园豆:86 (初学一级) | 2016-07-13 09:05

@杰哥要学习了: 你没用过list.where吗?

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-07-13 09:07

@吴瑞祥: 我T model,是个泛型,list.where 里面要指定使用list中的某个属性啊。。。

支持(0) 反对(0) 少时不知贵 | 园豆:86 (初学一级) | 2016-07-13 09:15

@杰哥要学习了: 你都用反射写sql了.你就继续用反射做判断啊.

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-07-13 10:20
0

将条件构造成一个Expression

jello chen | 园豆:7306 (大侠五级) | 2016-07-12 19:29
0

啊,果然初级

| 园豆:780 (小虾三级) | 2016-07-13 20:49
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册