[英]Lambda expressions - select operator
我想知道如何編寫Linq(使用標准點表示法中的lambda表達式)查詢。 我有一些名字的數組,我想根據一個聲明retrevie一個新的名字數組。 這是:對名稱數組進行排序,並從名稱上返回一個新列表,該名稱以某個特定字母(比如字母M)開頭。
這是我目前的數組:
string[] arrNames = { "Mike", "Zach", "Ella", "Allan", "Jo", "Roger", "Tito" };
我想回復這樣的名字:Mike,Roger,Tito,Zach - 這4個; 其他3個名字(Allan,Ella和Jo是以字母順序字母“M”開頭的字母開頭的名字。這與使用運算符“StartsWith”不同。這個只選擇在特定字母上開頭的名字我希望從這封信中獲得所有按字母順序排列的名稱(因此名稱從M到Z開頭) 。
因此,帶有名稱的重新列表以字母“M”開頭或以字母順序查看。
米蒂亞
var result = arrNames.Where(i => String.Compare("M", i) <= 0)
.OrderBy(i => i);
看起來你需要這個:
arrNames.Where(n => string.Compare(n, "M") >= 0)
以默認順序( { Mike, Zach, Roger, Tito }
)按字母順序返回所有名稱大於(或等於)“M”的名稱。
如果您想另外排序,請使用
arrNames.Where(n => string.Compare(n, "M") >= 0).OrderBy(n => n)
這給了{ Mike, Roger, Tito, Zach }
。
arrNames.Where(s => string.Compare(s,"M",StringComparison.InvariantCultureIgnoreCase) >= 0).OrderBy(s => s);
如果你想要不區分大小寫的比較。 或者使用StringComparison.InvariantCulture
來區分大小寫。 為字符串比較指定文化通常是個好主意(例如,您可以使用當前文化或不變文化)。
如果您的整個排序點只是為了獲得超出“M”的項目,那么您可以省略OrderBy。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.