我正在尝试对此列表进行排序:
public void Example()
{
string target = "hello";
List<string> myStings = new List<string>();
myStings.Add("babab");
myStings.Add("Helll");
myStings.Add("atest");
myStings.OrderBy(each => Distance(each, target));
}
public int Distance(string stringA, string stringB)
{
// Whatever
}
问题是列表没有被排序,并且Distance方法没有被触发(我在那里放了一个断点但没有被击中)。
任何帮助表示赞赏!
答案 0 :(得分:3)
这是因为 Linq's Deferred Execution
在LINQ中,查询的执行是 通常推迟到当时 你真的要求数据。
因此,要查看您的方法是否有效,请将ToList()
方法应用于IOrderedEnumerable
,以便实际请求数据,从而执行。
myStings = myStings.OrderBy(each => Distance(each, target)).ToList();
答案 1 :(得分:1)
myStings = myStings.OrderBy(每个=&gt;距离(每个,目标))。ToList();
答案 2 :(得分:1)
您
myStrings.OrderBy(each => Distance(each, target));
不会订购原始列表,它会返回一个有序列表。 你需要:
myStrings = myStrings.OrderBy(each => Distance(each, target)).ToList();
这将强制执行延期执行并为您提供所需的结果。