1.初始化數組
有時候,你隻是需要初始化一個數組用來測試資料,比如一個數組都是-1, 一個數組從0,1,...9, 另外一個是100,110,120....190,用LINQ可以簡化你的代碼:
int[] a = Enumerable.Repeat(-1, 10).ToArray();
int[] b = Enumerable.Range(0, 10).ToArray();
int[] c = Enumerable.Range(0, 10).Select(i => 100 + 10 * i).ToArray();
2.一次周遊多個數組
有時候我們希望在一個循環中周遊多個數組:
foreach (var x in array1) {
DoSomething(x);
}
foreach (var x in array2) {
DoSomething(x);
}
用LINQ就簡單多了:
foreach (var x in array1.Concat(array2)) {
DoSomething(x);
}
3.産生随機序列
有時候我們需要産生一個随機序列,用LINQ來生成非常友善,下列的代碼由于LINQ的延遲執行特性,隻有在周遊的時候才真正産生随機數:
Random rand = new Random();
var randomSeq = Enumerable.Repeat(0, N).Select(i => rand.Next());
4.生成字元串
有時候為了測試,我們需要生成特殊的字元串,例如:ABCABCABC....長度是N,使用LINQ會非常優雅:
string str = new string(
Enumerable.Range(0, N)
.Select(i => (char)('A' + i % 3))
.ToArray());
或者:
string values = string.Join(string.Empty, Enumerable.Repeat(pattern, N).ToArray());
5.轉換序列或集合
C#中你不能輕易轉換List<string>為List<object>,但可以轉換IEnumerable<U> 為IEnumerable<T>:
IEnumerable<string> strEnumerable = ...;
IEnumerable<object> objEnumerable = strEnumerable.Cast<object>();
如果你要轉換List<string>為List<object>,有點麻煩:
List<string> strList = ...;
List<object> objList = new List<object>(strList.Cast<object>());
或者:
var objList = strList.Cast<object>().ToList();