C# Lambda表达式-选择运算符

C# Lambda表达式-选择运算符,c#,linq,linq-to-objects,C#,Linq,Linq To Objects,我想知道如何编写Linq(在标准点表示法中使用lambda表达式)查询。 我有一些名称的数组,我想根据一条语句重新修改一个新的名称数组。这是:对名称数组进行排序,并从名称返回一个新列表,该列表以上的某个特定字母(比如字母M)开头 这是我当前的阵列: string[] arrNames = { "Mike", "Zach", "Ella", "Allan", "Jo", "Roger", "Tito" }; 我想返回这样的名字:迈克、罗杰、蒂托、扎克——这4个; 其他3个名字(Allan、Ell

我想知道如何编写Linq(在标准点表示法中使用lambda表达式)查询。 我有一些名称的数组,我想根据一条语句重新修改一个新的名称数组。这是:对名称数组进行排序,并从名称返回一个新列表,该列表以上的某个特定字母(比如字母M)开头

这是我当前的阵列:

string[] arrNames = { "Mike", "Zach", "Ella", "Allan", "Jo", "Roger", "Tito" };
我想返回这样的名字:迈克、罗杰、蒂托、扎克——这4个; 其他3个名字(Allan、Ella和Jo)都是以字母开头的名字,字母顺序为“M”。 这与使用运算符“StartWith”不同。此运算符仅选择以特定字母开头的名称。我希望获得以字母顺序排列的所有名称(因此名称从M到Z)

因此,从字母顺序看,名称列表以字母“M”或以上开头

Mitja

var result=arrNames.Where(i=>String.Compare(“M”,i)i);

看起来您需要这个:

arrNames.Where(n => string.Compare(n, "M") >= 0)
它以默认顺序返回所有按字母顺序大于(或等于)“M”的名称(
{Mike,Zach,Roger,Tito}

如果要对其进行额外排序,请使用

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。

运算符'>='不能应用于'string'和'string'类型的操作数。
这在我这边不编译:(哎呀,对不起!我习惯于重载字符串运算符。将编辑答案。
arrNames.Where(s => string.Compare(s,"M",StringComparison.InvariantCultureIgnoreCase) >= 0).OrderBy(s => s);