我正在浏览LINQ中的一些查询并希望了解它的实现,所以我想调试相同但是当我尝试这样做时,Visual Studio没有进入接口的实现。知道为什么。我正在使用Visual Studio Community 2015.这是我的代码
class Client
{
static void Main(string[] args)
{
string[] words = { "aPPLE", "AbAcUs", "bRaNcH", "BlUeBeRrY", "ClOvEr", "cHeRry" };
var result = words.OrderBy(a => a, new CaseInsensitiveComparer());
Console.Read();
}
}
public class CaseInsensitiveComparer : IComparer<string>
{
public int Compare(string x, string y)
{
Console.WriteLine("x is " + x + " & y is " + y+" the value is "+ string.Compare(x, y, StringComparison.OrdinalIgnoreCase));
return string.Compare(x, y, StringComparison.OrdinalIgnoreCase);
}
}
最可悲的部分是我也无法在控制台窗口中打印任何内容
Console.WriteLine(&#34; x是&#34; + x +&#34;&amp; y是&#34; + y +&#34;值是&#34; + string.Compare(x,y,StringComparison.OrdinalIgnoreCase));
我知道有很多重复的问题,但我尝试了一切,但没有一个适合我。
答案 0 :(得分:5)
只有在使用结果时才会评估.OrderBy()
调用(与许多linq方法一样)。由于您没有使用结果,因此代码实际上并未运行。
将.ToList()
放在最后,它将运行:
var result = words.OrderBy(a => a, new CaseInsensitiveComparer()).ToList();
您可能无法进入.OrderBy()
调用,但您可以在比较器实现中添加断点。
答案 1 :(得分:0)
OrderBy返回IEnumrable
要设置Linq查询,请在ToList()
子句
OrderBy
var result = words.OrderBy(a => a, new CaseInsensitiveComparer()).ToList();