我想写一个lambda表达式来验证列表是否正确排序.我有一个List,其中一个人有一个Name属性,例如:
IList<Person> people = new List<Person>();
people.Add(new Person(){ Name = "Alan"});
people.Add(new Person(){ Name = "Bob"});
people.Add(new Person(){ Name = "Chris"});
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过Name属性测试列表是否按ASC排序.所以我就是这样的
Assert.That(people.All(....), "list of person not ordered correctly");
Run Code Online (Sandbox Code Playgroud)
我怎么能写一个lambda来检查列表中的每个Person的名字是否少于列表中的下一个人?
这是Jared解决方案的替代方案 - 它几乎相同,但使用foreach循环和布尔变量来检查这是否是第一次迭代.我通常发现比手动迭代更容易:
public static bool IsOrdered<T>(this IEnumerable<T> source)
{
var comparer = Comparer<T>.Default;
T previous = default(T);
bool first = true;
foreach (T element in source)
{
if (!first && comparer.Compare(previous, element) > 0)
{
return false;
}
first = false;
previous = element;
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
470 次 |
| 最近记录: |