关于Linq中的IN和Like用法

来源:互联网 发布:重庆巨鸟网络 编辑:程序博客网 时间:2024/04/28 01:31

前段时间在写LINQ语句时,用到了SQL语句的IN组成。主要是运用了SQLMEOTHD或Container比较这样的属性。

例:

      var _chargeID = GetChargeSubJectTreeID(_charegsubjectTreeID); //得到一个集合,我这是放科目IQueryable<int> ,获致其ID

  var query = (from p in db.M_YSKNew                                 join c in db.Basic_ChargeSubject on p.ChargeSubject_TreeID equals c.ChargeSubject_TreeId                                 join t in db.Basic_AreaManager on p.StallID equals t.AreaManager_TreeID                                 //where p.StallID == intId && _chargeID.Contains<Int32>(p.ChargeSubject_TreeID) && p.YSJE == 0 && p.YSJE != p.SJYS                                 where p.StallID == intId && _chargeID.Contains<Int32>(p.ChargeSubject_TreeID) && p.YSJE == 0 && !p.SFRQ.HasValue && p.JHYS<0                               Select p;  //主要看红的部分,其它的不是主要的

上面这是一种可以用来处理IN的方法 SQL语句 Select * from Table Where Id In ( ) 这样的格式

如果是LIKE,就用SqlMethods.Like() 这样的格式,则要引用类Using System.Data.Linq.SqlClient;

看看帮助就全能解决了。LINQ在读取的时候不能不说它非常强大。但是不能局部判断组合语句。

        String Sql="Select * from Table "

   正常用判断可以这样:         If (条件)               Sql += "Where Name='"+ss+"'";        Else               Sql +=" where Id="+Id;但用LINQ语句写时就得重写了       If(条件)           var p=from c in db.aa                      where c.Name==ss                     select p;      Else             var p=from c in db.aa                       where c.ID==ID                       select p;    就是不能用正常的SQL语句拼写判断了,如果是这么少的还好办,如果是多条件的话,写起来也是一个麻烦事不知道有什么好办法没有。

 

    

原创粉丝点击