LINQ (语言集成查询)
LINQ的关键词:from, select, in, where, group by, orderby, …
from 临时变量 in 实现IEnumerable<T>接口的对象
where条件表达式
[orderby 条件]
[group by 条件]
select 临时变量中被查询的值
实现IEnumerable<T>接口的对象.LINQ方法名(lambda表达式)
1.查询一个int数组中小于5的数字,并按照大小顺序排列
static void Main(string[] args)
{
int[] arr = new int[] { 8, 5, 89, 41, 1, 2, 3, 65, 1 };
var m = from n in arr where n < 5 orderby n descending select n;//小于5,并且倒序排列显示
foreach (var n in m)
{
Console.WriteLine(n);
}
Console.ReadLine();
}
2. List<User> userlist = new List<User>(4) { user1, user2, user3, user4 };
List<School> Schlist = new List<School>() {
new School(1,"武汉大学"),new School(2,"华中科技大学"),new School(3,"华中师范大学")
};
(1)求和
var sum = userlist.Where(a => { return a.ID > 0; }).Sum(a=>a.ID);
Console.WriteLine(sum);
IEnumerable.Where()方法里面的参数数委托类型Func<TSource, bool> 前面为参数 最后面一个为返回值
(2)求最大最小值 Max Min
var max = userlist.Max(a => a.ID);
Console.WriteLine(max);
//最小值
var min = userlist.Min(a => a.ID);
Console.WriteLine(min);
(3)循环forEach
userlist.ForEach(a =>
{
if (a.Age > 20)
{
Console.WriteLine(a.ID);
}
});
(4)条件筛选where
var user = userlist.Where(a => a.ID == 114).Single();
//筛选所有男性用户
var templist = userlist.Where(a => a.Sex == "男").ToList();
(4)排序
//排序 根据ID逆序
templist = userlist.OrderByDescending(a => a.ID).ToList();
//升序
templist = userlist.OrderBy(a => a.ID).ToList();
(5)分组ToLookup和GroupBy
//分组
var lookup = userlist.ToLookup(a => a.Sex);
foreach (var item in lookup)
{
Console.WriteLine(item.Key);
foreach (var sub in item)
{
Console.WriteLine("\t\t"+sub.Name+" "+sub.Age);
}
}
//另一种
var dic = userlist.GroupBy(a => a.Sex);
foreach (var item in dic)
{
Console.WriteLine(item.Key);
foreach (var sub in item)
{
Console.WriteLine("\t\t" + sub.Name + " " + sub.Age);
}
}
(6)内联接
//联接
var temp = from usertemp in userlist join sch in Schlist on usertemp.SchID equals sch.SchID
select new { Id = usertemp.ID, Name = usertemp.Name, Age = usertemp.Age,Schname=sch.SchName };
二、
WebTestDBEntities db = new WebTestDBEntities();
1. linq查询所有列的数据
var userInfoList = from u in db.UserInfo
where u.ID == 10
select u;
2. linq查询部分列的数据
var userInfoList = from u in db.UserInfo
where u.ID >= 1
select new { Name = u.UserName, Pwd = u.UserPass };
foreach (var userInfo in userInfoList)
{
Response.Write(userInfo.Name + ":" + userInfo.Pwd + "<br/>");
}
3. lambda查询所有列数据
var userInfoList = db.UserInfo.Where<UserInfo>(u => u.ID > 0);
foreach (var userInfo in userInfoList)
{
Response.Write(userInfo.UserName + ":" + userInfo.UserPass + "<br/>");
}
4. lambda查询部分列数据
var userInfoList = db.UserInfo.Where<UserInfo>(u => u.ID > 0).Select(a => new { Name = a.UserName, Pwd = a.UserPass });
foreach (var userInfo in userInfoList)
{
Response.Write(userInfo.Name + ":" + userInfo.Pwd + "<br/>");
}
5. 排序
var userInfoList = db.UserInfo.Where<UserInfo>(c => true).OrderBy<UserInfo, int>(u => u.ID).Select(u => new { Name = u.UserName,Email=u.Email });//升序排序
var userInfoList = db.UserInfo.Where<UserInfo>(c => true).OrderByDescending<UserInfo, int>(u => u.ID).Select(u => new { Name = u.UserName, Email = u.Email });//降序排序
var userInfoList = (from u in db.UserInfo select u).OrderByDescending<UserInfo, int>(c => c.ID).Select(u => new { Name = u.UserName, Email = u.Email });
6.分页查询
int pageIndex = 2;
int pageSize = 2;
var userInfoList = db.UserInfo.Where<UserInfo>(c => true).OrderBy<UserInfo, int>(u => u.ID).Skip<UserInfo>((pageIndex - 1) * pageSize).Take<UserInfo>(pageSize);
foreach (var userInfo in userInfoList)
{
Response.Write(userInfo.UserName + "<br/>");
}
7.查询
myDataBaseEntities myDataBase = new myDataBaseEntities();
var list = myDataBase.Set<MyUser>().AsNoTracking().Where(e => e.UserID == userID && e.Password == passWord).ToList();
return list.Count > 0 ? true : false;
8.新增
myDataBaseEntities myDataBase = new myDataBaseEntities();
var list = myDataBase.Set<MyUser>().Add(myUser);
return myDataBase.SaveChanges() > 0 ? true : false;
9.修改
myDataBaseEntities myDataBase = new myDataBaseEntities();
var query = myDataBase.Set<MyUser>().Where(e => e.RowGuid == myUser.RowGuid).FirstOrDefault();
query.UserID = myUser.UserID;
query.UserName = myUser.UserName;
query.Password = myUser.Password;
myDataBase.Entry<MyUser>(query).State = EntityState.Modified;
return myDataBase.SaveChanges() > 0 ? true : false;
10.删除
myDataBaseEntities myDataBase = new myDataBaseEntities();
var list = myDataBase.Set<MyUser>().Remove(myUser);
return myDataBase.SaveChanges() > 0 ? true : false;