【发布时间】:2013-11-12 19:22:19
【问题描述】:
我正在尝试使用 ">=" 为字符串列/成员查询记录集合。
我想要/期望的是,鉴于“音乐家”成员中的以下值,这样的条件会:
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”开始出现的内容)。
然而,它并没有按预期工作,它甚至没有编译,我得到,“运算符'> ='不能应用于'string'和'string'类型的操作数”在“where m. LINQ 查询的音乐家 >= 音乐家”部分。
那么如何使用 LINQ 按字符串值过滤“记录”集合?
【问题讨论】:
-
您可以使用
string.Compare(m.musician, musician) >= 0,但它仍然有点狡猾。我什至不确定 SQL 翻译。 -
如果 Musician 是一个类,你需要重写操作符 >=.
-
@LuizFelipe 不,他在比较字符串,而不是
Musician对象。 -
哦,是的,很抱歉没有引起注意。
标签: c# string linq generics ienumerable