资源描述
C#集合运算
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace CollectionAlgebra
{
class Program
{
static void Main(string[] args)
{
/// Mozaic集合
IEnumerable<object> Mozaic = new object[] { new object(), 1, 3, 5, 7, 9, "\"thing\"", Guid.NewGuid() };
Print("Mozaic集合的内容: {0}", Mozaic);
/// 偶数集合
IEnumerable<int> EvenNumber = new int[] { 0, 2, 4, 6, 8 };
Print("\n偶数集合的内容: {0}", EvenNumber);
/// 奇数集合
IEnumerable<int> OddNumber = Mozaic.OfType<int>();
Print("\n奇数集合的内容: {0}", OddNumber);
/// 集合操作
IEnumerable<int> EvenOddSet = EvenNumber.Union(OddNumber);
Print("\n奇数与偶数集合的并集: {0}", EvenOddSet);
Print("\n整数集合与偶数集合的并集: {0}", EvenOddSet.Union(EvenNumber));
Print("\n整数集合与奇数集合相连接: {0}", EvenOddSet.Concat(OddNumber));
Print("\n整数集合与偶数集合的交集: {0}", EvenOddSet.Intersect(EvenNumber));
Print("\n整数集合与奇数集合连接,再删除重复值: {0}", EvenOddSet.Concat(OddNumber).Distinct());
if (!EvenOddSet.SequenceEqual(EvenOddSet.Concat(OddNumber).Distinct()))
{
throw new Exception("Unexpectedly unequal");
}
else
{
Print("\n反转整数集合: {0}", EvenOddSet.Reverse());
Print("\n求整数集合的平均值: {0}", EvenOddSet.Average());
Print("\n求整数集合的总和: {0}", EvenOddSet.Sum());
Print("\n求整数集合的最大值: {0}", EvenOddSet.Max());
Print("\n求整数集合的最小值: {0}", EvenOddSet.Min());
}
Console.ReadKey();
}
/// <summary>
/// 打印
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="format"></param>
/// <param name="items"></param>
private static void Print<T>(string format, IEnumerable<T> items)
{
StringBuilder text = new StringBuilder();
foreach (T item in items.Take(items.Count() - 1))
{
text.Append(item + ", ");
}
text.Append(items.Last());
Console.WriteLine(format, text);
}
/// <summary>
/// 打印
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="format"></param>
/// <param name="item"></param>
private static void Print<T>(string format, T item)
{
Console.WriteLine(format, item);
}
}
}
展开阅读全文