Linq to Object之非延迟标准查询操作符

非延时标准查询操作符是指不具备延时查询特性的标准查询操作符,这些操作符一般用于辅助延时标准查询操作符使用。

1、ToArray操作符

  ToArray操作符用于将一个输入序列转换成一个数组。

  方法原型:

public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source);

  代码示例:

        static void Main(string[] args)
        {
            List<int> listInt = new List<int>();
            listInt.Add(1);
            listInt.Add(2);
            listInt.Add(3);
            int[] intArr = listInt.AsEnumerable().ToArray();   //将集合转换为数组  //如果不AsEnumerable()则调用的就是List<T>类的ToArray()方法,效果一样
            foreach (int i in intArr)
            {
                Console.WriteLine(i);   //输出1 2 3
            }
            Console.ReadKey();
        }

2、ToList操作符

  ToList操作符用于将一个输入序列转换成一个List<T>对象。

  来看方法原型:

  public static List<TSource> ToList<TSource>(this IEnumerable<TSource> source);

  注意到返回的List<T>,任意IEnumerable<T>转换为List<T>

  代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[5] { 1, 2, 3, 4, 5 };
            List<int> ListInt = ints.ToList();
            foreach (int i in ints)
            {
                Console.WriteLine(i);   //输出 1 2 3 4 5
            }

            Console.ReadKey();
        }

3、ToDictionary操作符

  ToDictionary操作符用于将一个输入序列转换为一个Dictionary<K,T>集合对象。

  看方法原型:

    public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector);

    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
        public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector);

        public static Dictionary<TKey, TSource> ToDictionary<TSource, TKey>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, IEqualityComparer<TKey> comparer);

        public static Dictionary<TKey, TElement> ToDictionary<TSource, TKey, TElement>(this IEnumerable<TSource> source, Func<TSource, TKey> keySelector, Func<TSource, TElement> elementSelector, IEqualityComparer<TKey> comparer);

  代码示例:

        static void Main(string[] args)
        {
            People p1 = new People(1,"张飞",20);
            People p2 = new People(1,"关羽",21);
            People p3 = new People(1,"刘备",22);

            People[] PeoArr = new People[3] { p1, p2, p3 };
            Dictionary<string,People> DicPeo = PeoArr.ToDictionary(p => p.Name);   //指定Key是Name属性
            Console.WriteLine(DicPeo["张飞"].Id + DicPeo["张飞"].Name + DicPeo["张飞"].Age);  //输出 1 张飞 20

            Console.ReadKey();
        }

4、ToLookup操作符

  ToLookup操作符可以将一个输入序列转换成一个ILookup<K,T>集合对象。ILookup与IDictionary<K,T>非常相似,只不过在Dictionary中一个键只能对应一个元素,而在ILookup<K,T>中,一个键可以对应一组元素(一个序列)。

5、SequenceEqual操作符

  SequenceEqual操作符用于判断两个序列是否相等。

  方法原型:

    public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second);
        public static bool SequenceEqual<TSource>(this IEnumerable<TSource> first, IEnumerable<TSource> second, IEqualityComparer<TSource> comparer);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            int[] ints2 = new int[3] { 1, 2, 3 };

            Console.WriteLine(ints1.SequenceEqual(ints2));  //输出 True
            ints2[2] = 4;
            Console.WriteLine(ints1.SequenceEqual(ints2));  //输出False

            Console.ReadKey();
        }

6、First操作符

  First操作符用于返回输入序列的第一个元素或满足条件的第一个元素。

  方法原型:

    public static TSource First<TSource>(this IEnumerable<TSource> source);
    public static TSource First<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法多了一个委托,是再次筛选的,即第一个元素要令第二个委托为True才返回。

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            int i = ints1.Where(p => p > 1).First();
            Console.WriteLine(i);   //输出    2
            int j = ints1.Where(p => p > 1).First(m => m > 2);  //输出3,First参数里的委托要求第一个大于2的元素
            Console.WriteLine(j);

            Console.ReadKey();
        }

7、FirstOrDefault操作符

  FirstOrDefault操作符的使用与First操作符非常相似,只是在没有找到元素时,First操作符会抛出一个异常,而FirstOrDefault操作符会返回一个相关类型默认值元素。

  方法原型:

    public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source);
    public static TSource FirstOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型,增加了一个委托参数,该参数是进一步筛选用的。

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            //int i = ints1.Where(p => p > 4).First();    //此处会抛出异常,“序列中不包含任何元素”
            //Console.WriteLine(i);

            int j = ints1.Where(p => p > 4).FirstOrDefault();
            Console.WriteLine(j);       //输出0 可以看到在没有元素的时候,int类型返回0,其他类型也会返回默认值
            int k = ints1.Where(p => p > 1).FirstOrDefault(m => m > 2);
            Console.WriteLine(k);   //输出3

            Console.ReadKey();
        }

8、Last操作符

  Last操作符用于返回输入序列的最后一个元素或满足条件的最后一个元素。

  方法原型:

    public static TSource Last<TSource>(this IEnumerable<TSource> source);
    public static TSource Last<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型可以再次筛选。

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            int i = ints1.Where(p => p > 1).Last();     //大于1的有2 3
            Console.WriteLine(i);   //输出    3    

            int j = ints1.Where(p => p > 1).Last(m => m < 3);
            Console.WriteLine(j);       //输出    2

            Console.ReadKey();
        }

9、LastOrDefault操作符

  LastOrDefault操作符的使用与Last操作符类似,只是在没有找到元素时,Last操作符会抛出一个异常,而LastOrDefault会返回一个默认元素。

  方法原型:

    public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source);
        public static TSource LastOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            int i = ints1.Where(p => p > 4).LastOrDefault();     //大于4的元素没有
            Console.WriteLine(i);   //输出    0   

            int j = ints1.Where(p => p > 1).LastOrDefault(m => m < 3);
            Console.WriteLine(j);       //输出    2

            Console.ReadKey();
        }

10、Single操作符

  Single操作符用于从一个只含有一个元素的输入序列中返回唯一的元素或者满足特定条件的唯一元素。如果输入序列中的元素个数为零或多于一个,Single操作符会抛出一个异常。

  方法原型:

    public static TSource Single<TSource>(this IEnumerable<TSource> source);
    public static TSource Single<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型,多了个委托,可以再传入条件筛选。

        static void Main(string[] args)
        {
            int[] ints1 = new int[1] { 10 };
            int i = ints1.Single();
            Console.WriteLine(i);   //输出10

            int[] ints2 = new int[3] { 1, 2, 3 };
            int j = ints2.Single(m => m > 2);
            Console.WriteLine(j);   //输出3

            Console.ReadKey();
        }

11、SingleOrDefault操作符

  SingleOrDefault操作符的使用与Single操作符非常相似,只是在没有找到元素时,Single操作符会抛出一个异常对象,而SingleOrDefault会返回一个默认值的元素。

  方法原型:

    public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source);
    public static TSource SingleOrDefault<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  第二个方法原型还是允许传入条件进一步筛选。

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[0] {  };  //没有元素
            int i = ints1.SingleOrDefault();
            Console.WriteLine(i);   //输出 0

            int[] ints2 = new int[3] { 1, 2, 3 };
            int j = ints2.SingleOrDefault(m => m > 4);
            Console.WriteLine(j);   //输出0

            Console.ReadKey();
        }

12、ElementAt操作符

    ElementAt操作符用于返回输入序列中指定位置的元素。

    方法原型:

  public static TSource ElementAt<TSource>(this IEnumerable<TSource> source, int index);

    代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            int i = ints1.ElementAt(2);
            Console.WriteLine(i);   //输出 3

            Console.ReadKey();
        }

13、ElementAtOrDefault操作符

  ElementAtOrDefault操作符的使用与ElementAt操作符非常相似,只是在指定的位置索引值不合法的情况下。

  方法原型:

  public static TSource ElementAtOrDefault<TSource>(this IEnumerable<TSource> source, int index);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            int i = ints1.ElementAtOrDefault(4);
            Console.WriteLine(i);   //输出 0

            Console.ReadKey();
        }

14、Any操作符

   Any操作符用于判断一个输入序列中是否含有元素或者满足特定条件的元素。

  方法原型:

    public static bool Any<TSource>(this IEnumerable<TSource> source);
        public static bool Any<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            bool b1 = ints1.Any();
            Console.WriteLine(b1);   //返回True 输入序列中包含元素

            bool b2 = ints1.Any(p => p > 4); //判断输入序列中是否包含大于4的元素
            Console.WriteLine(b2);    //输出False 输入序列中不包含小于4的元素

            Console.ReadKey();
        }

15、All操作符

   All操作符用于判断输入序列中的所有元素是否全部满足指定条件。

   方法原型:

  public static bool All<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints1 = new int[3] { 1, 2, 3 };
            bool b = ints1.All(p => p > 0);
            Console.WriteLine(b);   //输出True  输入序列中的所有元素都大于0

            Console.ReadKey();
        }

16、Contains操作符

  Contains操作符用于判断输入序列中是否含有指定的元素。

   方法原型:

    public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value);
    public static bool Contains<TSource>(this IEnumerable<TSource> source, TSource value, IEqualityComparer<TSource> comparer);

  第二个方法原型支持自定义比较方法。

  代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[3] { 1, 2, 3 };
            bool b = ints.Contains(2);
            Console.WriteLine(b);   //输出 True

            Console.ReadKey();
        }

17、Count操作符

  Count操作符用于获取输入序列的元素个数或者满足某个特定条件的元素个数。

  方法原型:

    public static int Count<TSource>(this IEnumerable<TSource> source);
        public static int Count<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

   代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[3] { 1, 2, 3 };
            int count1 = ints.Count();
            Console.WriteLine(count1);  //输出3

            int count2 = ints.Count(p => p > 2);    //求大于1的元素个数
            Console.WriteLine(count2);  //输出1

            Console.ReadKey();
        }

18、LongCount操作符

  LongCount操作符的使用与Count操作符基本相同,不同的是Count操作符以int类型返回元素个数,而LongCount以Long类型返回元素个数。

  方法原型:

    public static long LongCount<TSource>(this IEnumerable<TSource> source);
    public static long LongCount<TSource>(this IEnumerable<TSource> source, Func<TSource, bool> predicate);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[3] { 1, 2, 3 };
            long count1 = ints.LongCount();
            Console.WriteLine(count1);  //输出3

            long count2 = ints.LongCount(p => p > 2);    //求大于1的元素个数
            Console.WriteLine(count2);  //输出1

            Console.ReadKey();
        }

19、Sum操作符

   Sum操作符用于计算输入序列中所有元素的数值总和,使用Sum操作符时需要注意,输入序列中的元素类型只能是int、long、double、或者decimal等数值型数据类型。

   方法原型:

        public static decimal? Sum(this IEnumerable<decimal?> source);
        public static decimal Sum(this IEnumerable<decimal> source);
        public static double? Sum(this IEnumerable<double?> source);
        public static double Sum(this IEnumerable<double> source);
        public static float? Sum(this IEnumerable<float?> source);
        public static float Sum(this IEnumerable<float> source);
        public static int? Sum(this IEnumerable<int?> source);
        public static int Sum(this IEnumerable<int> source);
        public static long? Sum(this IEnumerable<long?> source);
        public static long Sum(this IEnumerable<long> source);
        public static decimal? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
        public static decimal Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
        public static double? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
        public static double Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
        public static float? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
        public static float Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
        public static int? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
        public static int Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
        public static long? Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
        public static long Sum<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);

   代码示例:

    class Program
    {
        static void Main(string[] args)
        {
            int[] ints = new int[3] { 1, 2, 3 };
            int sum1 = ints.Sum();
            Console.WriteLine(sum1);     //输出 6

            People p1 = new People(1, "张飞", 20);
            People p2 = new People(2, "关羽", 21);
            People p3 = new People(3, "刘备", 22);
            List<People> listP = new List<People>();
            listP.Add(p1);
            listP.Add(p2);
            listP.Add(p3);
            int AgeCount = listP.Sum(s => s.Age);
            Console.WriteLine(AgeCount);    //输出63

            Console.ReadKey();
        }
    }

    public class People
    {
        public People(int id, string name, int age)
        {
            this.Id = id;
            this.Name = name;
            this.Age = age;
        }

        public int Id
        {
            get;
            set;
        }

        public string Name
        {
            get;
            set;
        }

        public int Age
        {
            get;
            set;
        }
    }

20、Min操作符

  Min操作符用于获取输入序列中所有元素的最小值,使用Min操作符需要注意,输入序列的元素类型只能是int、long、double、decimal等数值型数据类型或者是实现了IComparable<T>接口的数据类型。

  方法原型:

    public static decimal? Min(this IEnumerable<decimal?> source);
        public static decimal Min(this IEnumerable<decimal> source);
        public static double? Min(this IEnumerable<double?> source);
        public static double Min(this IEnumerable<double> source);
        public static float? Min(this IEnumerable<float?> source);
        public static float Min(this IEnumerable<float> source);
        public static int? Min(this IEnumerable<int?> source);
        public static int Min(this IEnumerable<int> source);
        public static long? Min(this IEnumerable<long?> source);
        public static long Min(this IEnumerable<long> source);
        public static TSource Min<TSource>(this IEnumerable<TSource> source);
        public static decimal? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
        public static decimal Min<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
        public static double? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
        public static double Min<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
        public static float? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
        public static float Min<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
        public static int? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
        public static int Min<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
        public static long? Min<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
        public static long Min<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);
        public static TResult Min<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[3] { 1, 2, 3 };
            int min1 = ints.Min();
            Console.WriteLine(min1);     //输出 1

            People p1 = new People(1, "张飞", 20);
            People p2 = new People(2, "关羽", 21);
            People p3 = new People(3, "刘备", 22);
            List<People> listP = new List<People>();
            listP.Add(p1);
            listP.Add(p2);
            listP.Add(p3);
            int AgeMin = listP.Min(s => s.Age);
            Console.WriteLine(AgeMin);    //输出 20

            Console.ReadKey();
        }

21、Max操作符

  Max操作符用于获取输入序列中所有元素的最大值。与Min的用法基本相同

  方法原型:

    public static decimal? Max(this IEnumerable<decimal?> source);
        public static decimal Max(this IEnumerable<decimal> source);
        public static double? Max(this IEnumerable<double?> source);
        public static double Max(this IEnumerable<double> source);
        public static float? Max(this IEnumerable<float?> source);
        public static float Max(this IEnumerable<float> source);
        public static int? Max(this IEnumerable<int?> source);
        public static int Max(this IEnumerable<int> source);
        public static long? Max(this IEnumerable<long?> source);
        public static long Max(this IEnumerable<long> source);
        public static TSource Max<TSource>(this IEnumerable<TSource> source);
        public static decimal? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
        public static decimal Max<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
        public static double? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
        public static double Max<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
        public static float? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
        public static float Max<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
        public static int? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
        public static int Max<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
        public static long? Max<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
        public static long Max<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);
        public static TResult Max<TSource, TResult>(this IEnumerable<TSource> source, Func<TSource, TResult> selector);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[3] { 1, 2, 3 };
            int max1 = ints.Max();
            Console.WriteLine(max1);     //输出 3

            People p1 = new People(1, "张飞", 20);
            People p2 = new People(2, "关羽", 21);
            People p3 = new People(3, "刘备", 22);
            List<People> listP = new List<People>();
            listP.Add(p1);
            listP.Add(p2);
            listP.Add(p3);
            int AgeMax = listP.Max(s => s.Age);
            Console.WriteLine(AgeMax);    //输出 22

            Console.ReadKey();
        }

22、Average操作符

  Average操作符用于计算输入序列中全体元素的平均值。同样,输入序列中的元素类型值能够是int、long、double、decimal等数值类型数据。

  方法原型:

    public static decimal? Average(this IEnumerable<decimal?> source);
        public static decimal Average(this IEnumerable<decimal> source);
        public static double? Average(this IEnumerable<double?> source);
        public static double Average(this IEnumerable<double> source);
        public static float? Average(this IEnumerable<float?> source);
        public static float Average(this IEnumerable<float> source);
        public static double? Average(this IEnumerable<int?> source);
        public static double Average(this IEnumerable<int> source);
        public static double? Average(this IEnumerable<long?> source);
        public static double Average(this IEnumerable<long> source);
        public static decimal? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal?> selector);
        public static decimal Average<TSource>(this IEnumerable<TSource> source, Func<TSource, decimal> selector);
        public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double?> selector);
        public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, double> selector);
        public static float? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float?> selector);
        public static float Average<TSource>(this IEnumerable<TSource> source, Func<TSource, float> selector);
        public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int?> selector);
        public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, int> selector);
        public static double? Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long?> selector);
        public static double Average<TSource>(this IEnumerable<TSource> source, Func<TSource, long> selector);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[3] { 1, 2, 3 };
            double ave1 = ints.Average();
            Console.WriteLine(ave1);     //输出 2

            People p1 = new People(1, "张飞", 20);
            People p2 = new People(2, "关羽", 21);
            People p3 = new People(3, "刘备", 22);
            List<People> listP = new List<People>();
            listP.Add(p1);
            listP.Add(p2);
            listP.Add(p3);
            double AgeAve = listP.Average(s => s.Age);
            Console.WriteLine(AgeAve);    //输出 21

            Console.ReadKey();
        }

23、Aggregate操作符

  Aggregate操作符用于在输入序列的所有元素上累积执行某个特定额方法。

  方法原型:

    public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func);
    public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func);
    public static TResult Aggregate<TSource, TAccumulate, TResult>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func, Func<TAccumulate, TResult> resultSelector);

  代码示例:

        static void Main(string[] args)
        {
            int[] ints = new int[4] { 1, 2, 3 ,4};
            int i = ints.Aggregate((p,next) => p + next);   //p代表当前元素,next代表下一个元素
            Console.WriteLine(i);   //输出10

            int j = ints.Aggregate(5,(p, next) => p + next);   //全部加完再加 15
            Console.WriteLine(j);   //输出11

            int k = ints.Aggregate(5, (p, next) => p * next);   //全部乘完再加 120
            Console.WriteLine(k);   //输出30

            Console.ReadKey();
        }

时间: 2025-01-11 04:18:36

Linq to Object之非延迟标准查询操作符的相关文章

Linq to BBJECT之非延时标准查询操作符

非延时标准查询操作符是指不具备延时查询特性的标准查询操作符,这些操作符一般用于辅助延时标准查询操作符使用. 1.ToArray操作符 ToArray操作符用于将一个输入序列转换成一个数组. 方法原型: public static TSource[] ToArray<TSource>(this IEnumerable<TSource> source); 代码示例: static void Main(string[] args) { List<int> listInt =

Linq to OBJECT延时标准查询操作符

1.Where 操作符用于限定输入集合中的元素,将符合条件的元素组织声称一个序列结果. 2.Select  操作符用于根据输入序列中的元素创建相应的输出序列中的元素,输出序列中的元素类型可以与输入序列中的元素类型相同,也可以不同.下面来看看Select方法的原型. 3.SelectMany 操作符用于根据输入序列中的每一个元素,在输出序列中创建相应的零个或者多个元素,与Select操作符不同,Select操作符会根据输入序列中的每一个元素创建一个对应的输出序列元素,而SelectMany操作符可

LINQ标准查询操作符详解(转)

 一. 关于LINQ       LINQ 英文全称是“Language-Integrated Query”,中文为“语言集成查询”,它是微软首席架构师.Delphi 之父和C# 之父——Anders Hejlsberg 提出的并由其团队着力打造的一组用于c#和Visual Basic语言的扩展,为 C# 和 Visual Basic 语言语法提供强大的查询功能.微软从2003年开始启动LINQ的开发,在VisualStudio2008中开始加入LINQ功能. LINQ提供的便利: 1)使用一种

Linq 标准查询操作符三

本文介绍了LINQ标准查询操作符.没有这些操作符,LINQ就不会存在.本文为理解这些操作符的功能提供了很好的基础.了解它们将会很有帮助,因为LINQ的各种Provider都是基于这些操作符来完成各自丰富的功能. 一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: using (NorthwindDataContext db = new NorthwindDataContext()) { //查

LINQ标准查询操作符(四)—AsEnumerable,Cast,OfType,ToArray,ToDictionary,ToList,ToLookup,First,Last,ElementAt

本文来自:http://blog.csdn.net/xuejianwu/article/details/6931926 十.转换操作符 转换操作符是用来实现将输入对象的类型转变为序列的功能.名称以“As”开头的转换方法可更改源集合的静态类型但不枚举(延迟加载)此源集合.名称以“To”开头的方法可枚举(即时加载)源集合并将项放入相应的集合类型. 1. AsEnumerable 所有实现了IEnumerable<T>接口的类型都可以调用此方法来获取一个IEnumerable<T>集合.

LINQ标准查询操作符(三)——Aggregate、Average、Distinct、Except、Intersect、Union、Empty、DefaultIfEmpty、Range、Repeat

本文来自:http://blog.csdn.net/xuejianwu/article/details/6931903 七.聚合操作符 聚合函数将在序列上执行特定的计算,并返回单个值,如计算给定序列平均值.最大值等.共有7种LINQ聚合查询操作符:Aggregate.Average.Count.LongCount.Max.Min和Sum. 1. Aggregate Aggregate操作符对集合值执行自定义聚合运算.例如,需要列出所有产品类别清单,每个类别名称之间用顿号连接.以下的代码演示了这一

LINQ标准查询操作符(一)——select、SelectMany、Where、OrderBy、OrderByDescending、ThenBy、ThenByDescending和Reverse

本文来自:http://blog.csdn.net/xuejianwu/article/details/6931804 一.投影操作符 1. Select Select操作符对单个序列或集合中的值进行投影.下面的示例中使用select从序列中返回Employee表的所有列: [csharp] view plaincopy using (NorthwindDataContext db=new NorthwindDataContext()) { //查询语法 var query = from e i

LINQ标准查询操作符(二)——Join、GroupJoin、GroupBy、Concat、

本文来自:http://blog.csdn.net/xuejianwu/article/details/6931853 四.联接操作符 联接是指将一个数据源对象与另一个数据源对象进行关联或者联合的操作.这两个数据源对象通过一个共同的值或者属性进行关联. LINQ有两个联接操作符:Join和GroupJoin. 1. Join Join操作符类似于T-SQL中的inner join,它将两个数据源相联接,根据两个数据源中相等的值进行匹配.例如,可以将产品表与产品类别表相联接,得到产品名称和与其相对

C# LINQ标准查询操作符

首先添加数据集合 1 [Serializable] 2 public class Racer : IComparable<Racer>, IFormattable 3 { 4 public Racer() 5 { } 6 public Racer(string firstName, string lastName, string country, int starts, int wins) 7 : this(firstName, lastName, country, starts, wins,