Linq to Objects

 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace xStudyezLinq {     public class UserInfo     {         public int ID         {             get;             set;         }         public string UserName         {             get;             set;         }         public List<string> AliasName         {             get;             set;         }         public string Email         {             get;             set;         }         public int RoleId         {             get;             set;         }     }     public class RoleInfo     {         public int RoleId { get; set; }         public string RoleName { get; set; }     }     public class LinqSelect     {         public static void Query()         {             string[] strs = new string[] { "2008", "08", "099", "20" };             var result = from str in strs                          where str.Length > 2                          orderby str                          select str;             foreach (var i in result)             {                 Console.WriteLine(i.PadLeft(10, '0'));             }         }         public static void ObjectInit()         {             UserInfo u = new UserInfo             {                 ID = 2008,                 UserName = "dhzstudyez",                 AliasName = new List<string>() { "ASP.NET" },                 Email = "d.h.z@live.cn",                 RoleId = 2             };             List<UserInfo> users = new List<UserInfo>();             for (int i = 1; i < 10; i++)             {                 users.Add(                     new UserInfo()                     {                         ID = i,                         RoleId = i,                         Email = "user" + i.ToString() + "@asp.net",                         AliasName = new List<string>() { "asp.net" },                         UserName = "userName_" + i.ToString()                     });             }             var value = from c in users                         where c.ID < 3                         select new                         {                             UserName = c.UserName,                             RolleId = c.RoleId                         };             foreach (var x in value)             {                 Console.WriteLine(x.UserName);             }         }         public static void LambdaQuery()         {             int[] ints = new int[100];             for (int i = 0; i < 100; i++) ints[i] = i;             var values = ints.Select(i => i % 5);             var result = values.Distinct();             //foreach (var v in values)             //{             //    Console.WriteLine(v);             //}             foreach (var r in result)             {                 Console.WriteLine(r);             }         }         public static void QueryExpressionBase()         {             List<UserInfo> users = new List<UserInfo>();             for (int i = 1; i < 10; i++)             {                 users.Add(                     new UserInfo()                     {                         RoleId = 2,                         UserName = string.Format("User_{0}", i),                         ID = i,                         AliasName = new List<string>() { "Aspnet_User", "User" + i.ToString() },                         Email = string.Format("Ui{0}@studyez.cn", i)                     });             }             var value = from u in users                         from an in u.AliasName                         where u.ID < 3 && an.ToString().IndexOf("1") > -1                         select u;             foreach (var v in value)             {                 Console.WriteLine(v.UserName);             }         }         static bool exist(string userName)         {             return userName.IndexOf("1") > -1;         }         public static void QueryExpressionBase2()         {             List<UserInfo> users = new List<UserInfo>();             for (int i = 1; i < 10; i++)             {                 users.Add(                     new UserInfo()                     {                         RoleId = 2,                         UserName = string.Format("aUser_{0}", i),                         ID = i,                         AliasName = new List<string>() { "aAspnet_User", "aUser" + i.ToString() },                         Email = string.Format("aUi{0}@studyez.cn", i)                     });             }             List<UserInfo> bu = new List<UserInfo>();             for (int i = 1; i < 10; i++)             {                 bu.Add(                     new UserInfo()                     {                         RoleId = 3,                         UserName = string.Format("bUser_{0}", i),                         ID = i,                         AliasName = new List<string>() { "bAspnet_User", "bUser" + i.ToString() },                         Email = string.Format("bUi{0}@studyez.cn", i)                     });             }             var value = from au in users                         where au.ID > 3                         from b in bu                         where b.ID > 5                         select new                         {                             UserName = au.UserName,                             UserMalie = b.Email                         };             foreach (var v in value)             {                 Console.WriteLine(v.UserName);                 Console.WriteLine(v.UserMalie);             }             var ext = from au in users                       where au.ID > 3 && exist(au.UserName)                       select au;             foreach (var e in ext)             {                 Console.WriteLine(e.UserName.PadLeft(20, 'X'));             }             IEnumerable<int> c = from u in users                                  select u.ID * 100;             foreach (int ic in c)             {                 Console.WriteLine(ic);             }             Console.WriteLine("Group by ");             var grpValue = from u in users                            group u by u.ID % 2 == 0;             foreach (var v in grpValue)             {                 Console.WriteLine("-----------------------");                 foreach (UserInfo ui in v)                 {                     Console.WriteLine(ui.ID);                     Console.WriteLine(ui.UserName);                 }             }             Console.WriteLine("Group To");             var grpValue2 = from u in users                             group u by u.ID % 2 == 0 into g                             where g.Count() > 4                             select g;             foreach (var v in grpValue2)             {                 Console.WriteLine("-----------------------");                 foreach (UserInfo ui in v)                 {                     Console.WriteLine(ui.ID);                     Console.WriteLine(ui.UserName);                 }             }         }         public static void JoinQuery()         {             List<UserInfo> users = new List<UserInfo>();             for (int i = 1; i < 10; i++)             {                 users.Add(                     new UserInfo()                 {                     RoleId = i % 2,                     UserName = string.Format("aUser_{0}", i),                     ID = i,                     AliasName = new List<string>() { "aAspnet_User", "aUser" + i.ToString() },                     Email = string.Format("aUi{0}@studyez.cn", i)                 });             }             List<RoleInfo> roles = new List<RoleInfo>()             {                              new RoleInfo()                 {                     RoleId = 0,                     RoleName = "Admin"                 },                new RoleInfo(){                     RoleName ="Aspnet",                     RoleId =1                }             };             var value = from u in users                         where u.ID < 9                         join r in roles                         on u.RoleId equals r.RoleId                         select new                         {                             UserName = u.UserName,                             RoleName = r.RoleName                         };             Console.WriteLine("InnerJoin");             foreach (var x in value)             {                 Console.WriteLine(string.Format("{0} {1}", x.UserName, x.RoleName));             }             Console.WriteLine("GroupJoin");             var value2 = from u in users                         where u.ID < 9                         join r in roles                         on u.RoleId equals r.RoleId  into g                         select new                         {                             UserName = u.UserName,                             Roles=g.ToList ()                         };             foreach (var x in value2)             {                 Console.WriteLine(string.Format("{0} {1}", x.UserName, x.Roles.Count));             }         }     }  public   class LinqOperation     {         List<UserInfo> users;         List<RoleInfo> roles;         public LinqOperation()         {            users = new List<UserInfo>();             for (int i = 1; i < 100; i++)             {                 users.Add(                     new UserInfo()                     {                         RoleId = i % 2,                         UserName = string.Format("User_{0}", i),                         ID = i,                         AliasName = new List<string>() { "Aspnet_User", "User" + i.ToString() },                         Email = string.Format("Ui{0}@studyez.cn", i)                     });             }              roles = new List<RoleInfo>()             {                             new RoleInfo()                 {                     RoleId = 0,                     RoleName = "Admin"                 },                new RoleInfo(){                     RoleName ="Aspnet",                     RoleId =1                }             };         }         public void WhereFilterQuery()         {             var values = from u in users                          where u.ID < 3                          select u;             var vOther = users.Where(u => u.UserName.IndexOf("1") != -1);             foreach (var v in values) Console.WriteLine(v.UserName);             foreach (var o in vOther) Console.WriteLine(o.UserName);         }         public void SelectManyQuery()         {             int[] ione = { 1, 2, 3 };             int[] tow = { 4, 5, 6 };             List<int[]> lst =new List<int[]> { ione, tow };             var v = lst.SelectMany(i => i);             foreach (var vi in v)                 Console.WriteLine(vi);         }                          public void SelectTop()         {             Func<UserInfo, bool> del = x => x.ID > 10;             var us = users.TakeWhile((x, i) => x.ID < 10);             foreach (var ui in us)             {                 Console.WriteLine(ui.ID);             }             ///TakeWhile會一直取出元素,直到某個元素不符合所指定的 Lambda Expression為止,             ///這意味著假如指定ID>10 時,將不會有任何元素列出,             ///因為陣列中的第一個元素就已經不符合條件了,所以While動作就結束了。             var us2 = users.TakeWhile((x, i) => x.ID > 10);             foreach (var u2 in us2)             {                 Console.WriteLine(u2.ID);             }             /*等价的方式:                List<UserInfo> ls=new List<UserInfo>();                i=0;                while(users[i].ID>10){                     ls.Add(x);                     i++;               }               return ls;              */             var xt = users.Max(u => u.ID);             Console.WriteLine(xt);             var u3 = users.Skip(2).Take(10);             foreach (var x3 in u3)                 Console.WriteLine(x3.ID);             Console.WriteLine("SkipWhile");             var u4 = users.SkipWhile((x, i) => x.ID < 10);             foreach (var x4 in u4)                 Console.WriteLine(x4.ID);             Console.WriteLine("SkipWhile2");             ///若指定ID>=10 時,那麼將會列出所有元素,因為在第一個元素時,While就已經結束了             var u5 = users.SkipWhile((x, i) => x.ID >= 10);           /*  List<UserInfo> ls = new List<UserInfo>();             i = 0;             while (users[i].ID >= 10)             {                                i++;             }             for(;i<100;i++)              ls.add(users[i]);             return ls;            */                         foreach (var x5 in u5)                 Console.WriteLine(x5.ID);         }         public void JoinQuery()         {             var value = users.Join(roles,                 user => user.RoleId,                 role => role.RoleId,                 (user, role) =>                     new                     {                         UserName = user.UserName,                         RoleName = role.RoleName                     });             foreach (var v in value)                 Console.WriteLine("{0}:{1}", v.UserName, v.RoleName);               }     } } ---------------------------代码纯是用于自学。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
LINQ to Objects(Language-Integrated Query,语言集成查询)是.NET Framework 3.5中引入的一种查询技术,它允许在C#和VB.NET等编程语言中直接使用类似于SQL的查询语法来操作对象集合。LINQ to Objects可以简化数据访问层的代码,提高开发效率。 LINQ to Objects的主要特点包括: 1. 声明性查询:可以使用简洁的语法编写查询,而无需关心底层的数据访问细节。 2. 延迟执行:查询只会在需要结果时才会执行,这有助于提高性能。 3. 支持多种查询操作:包括筛选、排序、投影、连接等。 4. 支持动态类型:LINQ to Objects可以处理各种类型的对象,无需进行类型转换。 以下是一个简单的LINQ to Objects示例: ```csharp using System; using System.Collections.Generic; using System.Linq; class Person { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } } class Program { static void Main() { List<Person> people = new List<Person> { new Person { Id = 1, Name = "张三", Age = 28 }, new Person { Id = 2, Name = "李四", Age = 32 }, new Person { Id = 3, Name = "王五", Age = 25 }, }; // 使用LINQ to Objects查询年龄大于等于30的人,并按年龄升序排列 var result = from person in people where person.Age >= 30 orderby person.Age ascending select person; // 输出查询结果 foreach (var person in result) { Console.WriteLine($"Id: {person.Id}, Name: {person.Name}, Age: {person.Age}"); } } } ``` 在这个示例中,我们首先创建了一个包含Person对象的列表,然后使用LINQ to Objects查询年龄大于等于30的人,并按年龄升序排列。最后,我们遍历查询结果并输出到控制台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值