c# - 如何根据字符串值通过 LINQ 查询列表的内容?

标签 c# string linq generics ienumerable

我正在尝试使用字符串列/成员的 ">= 来查询记录集合。

我想要/期待的是,考虑到“musician”成员中的以下值,这样的条件会发生:

Clarence "Gatemouth" Brown
Merle Travis
Eddie Van Halen
Rory Gallagher
Elvin Bishop
Eric Clapton
Jimi Hendrix
Stevie Ray Vaughan
Robin Trower
Ritchie Blackmore
Carlos Santana
Mark Knopfler
Pete Anderson

...以及以下 LINQ 查询:

private readonly List<Musician> musicians = new List<Musician>();
. . .
public IEnumerable<Musician> Get(string musician)
{
    IEnumerable<Musician> Musicians = from m in musicians
                                      where m.musician >= musician
                                      select m;
    . . .

...将“Robin”作为“musician”参数传递,返回 Musician 的 IEnumerbale 集合,其中包含音乐家值为:

Robin Trower
Rory Gallagher
Stevie Ray Vaughan

(IOW,任何“大于”Robin 的内容,例如在 SQL 查询中使用“ORDER BY MUSICIAN”子句时从“Robin”开始出现的内容)。

但是,它并没有按预期工作,甚至无法编译,我得到,“Operator '>='无法应用于“where m.”上的“string”和“string”类型的操作数”。 LINQ 查询的音乐家 >= 音乐家”部分。

那么如何使用 LINQ 按字符串值过滤“记录”集合?

最佳答案

您应该使用 String.Compare(str1, str2) ,它返回:

  • 如果 str1 小于 str2,则小于零
  • 如果 str1 大于 str2,则大于零
  • 0 str1 等于 str2

Here is the link to the documentation

    var musicians = new List<string>()
    {
        "Clarence \"Gatemouth\" Brown",
        "Merle Travis",
        "Eddie Van Halen",
        "Rory Gallagher",
        "Elvin Bishop",
        "Eric Clapton",
        "Jimi Hendrix",
        "Stevie Ray Vaughan",
        "Robin Trower",
        "Ritchie Blackmore",
        "Carlos Santana",
        "Mark Knopfler",
        "Pete Anderson",
    };

    var musician = "Robin";
    var newMusicians = musicians.Where(m => 0 < String.Compare(m,  musician));

    MessageBox.Show(String.Join(Environment.NewLine, newMusicians.ToArray()));

或者如果您更喜欢类似 sql 的语法:

var newMusicians = from m in musicians
                where 0 < String.Compare(m, musician)
                select m;

关于c# - 如何根据字符串值通过 LINQ 查询列表的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19938069/

相关文章:

LINQ : Distinct and Orderby

c# - 如何将按钮自动调整为更小的尺寸?

c# - 如何在 C# 中将 jpg 转换为 webp

c# - 在控制台应用程序中捕获 ctrl+c 事件(多线程)

c# - 如何将路径添加到 DLL 搜索顺序

c# - 条件FormatString或String.Format

c# - 通过 Lambda 表达式对 List<Object> 进行排序

JQuery 按字符搜索字符串

c - strtof-返回错误的数字

c# - 如何使用动态LINQ(System.Linq.Dynamic)进行LIKE操作?