Linq to sql 动态添加条件多表查询数据

su夏木 2014-07-22 04:51:56
from dstu in DB.t_imsstudent
join dsign in DB.t_imsignups
on dstu.OBJ_ID equals dsign.studentID
select new
{
OBJ_ID = dsign.objID,
name = dstu.name,
CSRQ = dstu.CSRQ,
XBM = dstu.XBM,
manuallabornumber = dsign.manuallabornumber,
trainingofoccupation = dsign.trainingofoccupation,
tfdegree = dsign.tfdegree,

};

像这样多表查询
但是现在需要根据几个条件。。条件是动态添加的。。是根据用户的选择来添加的。。用户可能选择了名字为多少 。。也可能选择了身份证号为多少。。也可能要求名字和身份证号为多少。。这样动态的条件查询。。
我使用linq 的addwhere追加条件。。因为我多表查询的时候重新new了一个表。。所以导致现在没法动态追加条件。。追加条件一直提示表类型不正确。。额。。不知道我描述清楚了没??有什么办法解决这个问题么?
追加条件的代码这样做的。
List<Expression<Func<LinqToSql.Orm.t_imsignup, bool>>> exlist = new List<Expression<Func<LinqToSql.Orm.t_imsignup, bool>>>();
var list = DataList.Where(IMSROOT.App_Code.DynamicLinq.AddWhere<LinqToSql.Orm.t_imsignup>(exlist));

...全文
347 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
su夏木 2014-07-23
  • 打赏
  • 举报
回复
引用 4 楼 q107770540 的回复:
   QueryContext query = new QueryContext();  
           var q = from u in query.Users  
                    select u;  
           if (!string.IsNullOrEmpty(a))  
           {  
               q = q.Where(p => p.name == a);  
           }  
           if (!string.IsNullOrEmpty(b))  
           {  
               q = q.Where(p => p.age == b);  
           }  
           if (!string.IsNullOrEmpty(c))  
           {  
               q = q.Where(p => p.sex == c);  
           }  
           if (!string.IsNullOrEmpty(d))  
           {  
               q = q.Where(p => p.address == d);  
           }  
           q.ToList();  //上边的所有if,只有到此处才会执行 
http://blog.csdn.net/q107770540/article/details/5724013
谢谢。。照你这个方法。。已经做好了。。
su夏木 2014-07-23
  • 打赏
  • 举报
回复
引用 3 楼 sunny906 的回复:
然后再用Linq to DataSet 来返回你需要的对象列表
因为任务紧。。没有时间试你说的方法。。晚上回去试试。。我采用的楼下的方法。。还是谢谢你。。
q107770540 2014-07-22
  • 打赏
  • 举报
回复
   QueryContext query = new QueryContext();  
           var q = from u in query.Users  
                    select u;  
           if (!string.IsNullOrEmpty(a))  
           {  
               q = q.Where(p => p.name == a);  
           }  
           if (!string.IsNullOrEmpty(b))  
           {  
               q = q.Where(p => p.age == b);  
           }  
           if (!string.IsNullOrEmpty(c))  
           {  
               q = q.Where(p => p.sex == c);  
           }  
           if (!string.IsNullOrEmpty(d))  
           {  
               q = q.Where(p => p.address == d);  
           }  
           q.ToList();  //上边的所有if,只有到此处才会执行 
http://blog.csdn.net/q107770540/article/details/5724013
sunny906 2014-07-22
  • 打赏
  • 举报
回复
然后再用Linq to DataSet 来返回你需要的对象列表
sunny906 2014-07-22
  • 打赏
  • 举报
回复
你可以这样写,还简单些

            string sql = "select * from t where 1=1";

            //姓名不为空就把姓名加入where条件
            if (!string.IsNullOrEmpty(this.txtName.Text.Trim()))
            {
                sql = sql + string.Format(" and name like '%{0}%'", this.txtName.Text.Trim());
            }

            //身份证号不为空就把身份证号加入where条件
            if (!string.IsNullOrEmpty(this.txtID.Text.Trim()))
            {
                sql = sql + string.Format(" and id like '%{0}%'", this.txtID.Text.Trim());
            }
su夏木 2014-07-22
  • 打赏
  • 举报
回复
或者说用其他办法查询数据??

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧