= 来查询记录集合。 我想要/期待的是,考虑到“musician”成员中的以下值,这样的条件会发生: Clarence "Gatemouth" Brown Merl-6ren">
gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 19:31:53 28 4
gpt4 key购买 nike

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

我想要/期待的是,考虑到“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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com