前段时间在写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语句拼写判断了,如果是这么少的还好办,如果是多条件的话,写起来也是一个麻烦事 不知道有什么好办法没有。