日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

linq中的串聯操作符_實用技巧

作者:.NET開發菜鳥 ? 更新時間: 2022-05-12 編程語言

串聯是一個將兩個集合連接在一起的過程。在Linq中,這個過程通過Concat操作符實現。Concat操作符用于連接兩個集合,生成一個新的集合。來看看Concat操作符的定義:

public static IEnumerable Concat(this IEnumerable first, IEnumerable second)

?從方法定義中可以看出:第二個參數為輸入一個新的集合,與調用集合連接,生成并返回一個新的集合。

注意:

第一個集合和第二個集合的元素的類型必須是相同的。

請看下面的例子:

定義Category類,其類定義如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SeriesOperation
{
    public class Category
    {
        public int Id { get; set; }
        public string CategoryName { get; set; }
        public DateTime CreateTime { get; set; }
    }
}

然后在Main()方法中調用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SeriesOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化數據
            List listCategory = new List()
            {
              new Category(){ Id=1,CategoryName="計算機",CreateTime=DateTime.Now.AddYears(-1)},
              new Category(){ Id=2,CategoryName="文學",CreateTime=DateTime.Now.AddYears(-2)},
              new Category(){ Id=3,CategoryName="高校教材",CreateTime=DateTime.Now.AddMonths(-34)},
              new Category(){ Id=4,CategoryName="心理學",CreateTime=DateTime.Now.AddMonths(-34)}
            };

            List list = new List()
            {
              new Category(){ Id=5,CategoryName="管理類",CreateTime=DateTime.Now.AddDays(-34)},
              new Category(){ Id=6,CategoryName="金融學",CreateTime=DateTime.Now.AddYears(-4)}
            };

            // 查詢表達式
            var newListExpress = (from c in listCategory select c).Concat(from p in list select p);
            Console.WriteLine("查詢表達式輸出:");
            foreach (var item in newListExpress)
            {
                Console.WriteLine($"Id:{item.Id},CategoryName:{item.CategoryName},CreateTime:{item.CreateTime}");
            }

            var newList = listCategory.Concat(list);
            Console.WriteLine("方法語法輸出:");
            foreach (var item in newList)
            {
                Console.WriteLine($"Id:{item.Id},CategoryName:{item.CategoryName},CreateTime:{item.CreateTime}");
            }

            Console.ReadKey();
        }
    }
}

結果:

如何輸出不同集合中相同類型的元素呢?看下面的例子:

在定義Product類,其定義如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SeriesOperation
{
    public class Product
    {
        public int Id { get; set; }
        public int CategoryId { get; set; }
        public string Name { get; set; }
        public double Price { get; set; }
        public DateTime CreateTime { get; set; }
    }
}

Category類中的CategoryName和Product類中的Name都是string類型的,在下面的例子中輸出Category中的CategoryName和Product中的Name。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SeriesOperation
{
    class Program
    {
        static void Main(string[] args)
        {
            // 初始化數據
            List listCategory = new List()
            {
              new Category(){ Id=1,CategoryName="計算機",CreateTime=DateTime.Now.AddYears(-1)},
              new Category(){ Id=2,CategoryName="文學",CreateTime=DateTime.Now.AddYears(-2)},
              new Category(){ Id=3,CategoryName="高校教材",CreateTime=DateTime.Now.AddMonths(-34)},
              new Category(){ Id=4,CategoryName="心理學",CreateTime=DateTime.Now.AddMonths(-34)}
            };
            List listProduct = new List()
            {
               new Product(){Id=1,CategoryId=1, Name="C#高級編程第10版", Price=100.67,CreateTime=DateTime.Now},
               new Product(){Id=2,CategoryId=1, Name="Redis開發和運維", Price=69.9,CreateTime=DateTime.Now.AddDays(-19)},
               new Product(){Id=3,CategoryId=2, Name="活著", Price=57,CreateTime=DateTime.Now.AddMonths(-3)},
               new Product(){Id=4,CategoryId=3, Name="高等數學", Price=97,CreateTime=DateTime.Now.AddMonths(-1)},
               new Product(){Id=5,CategoryId=6, Name="國家寶藏", Price=52.8,CreateTime=DateTime.Now.AddMonths(-1)}
            };

            // 查詢表達式
            var newList = (from p in listProduct
                           select p.Name).Concat(from c in listCategory select c.CategoryName);
            Console.WriteLine("查詢表達式輸出:");
            foreach (var item in newList)
            {
                Console.WriteLine(item);
            }
            Console.WriteLine("*************************");
            // 方法語法
            var newListFun = listProduct.Select(p => p.Name).Concat(listCategory.Select(c => c.CategoryName));
            Console.WriteLine("方法語法輸出:");
            foreach (var item in newListFun)
            {
                Console.WriteLine(item);
            }

            Console.ReadKey();
        }
    }
}

結果:

原文鏈接:https://www.cnblogs.com/dotnet261010/p/9311015.html

欄目分類
最近更新