Jon*_*Jon 2 c# linq ienumerable c#-3.0
我有一个 List<MyClass>
这个班是这样的:
private class MyClass
{
public string Name{ get; set; }
public int SequenceNumber { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我想弄清楚序列号可能缺失的是什么.我可以在这看到如何做到这一点,因为这是一个我不确定该怎么做的课程?
我想我可以使用自己的IComparer处理except方法,但我无法弄清楚Range方法,因为它只能排除int,所以这不会编译:
Enumerable.Range(0, 1000000).Except(chqList, MyEqualityComparer<MyClass>);
Run Code Online (Sandbox Code Playgroud)
这是IComparer:
public class MyEqualityComparer<T> : IEqualityComparer<T> where T : MyClass
{
#region IEqualityComparer<T> Members
public bool Equals(T x, T y)
{
return (x == null && y == null) || (x != null && y != null && x.SequenceNumber.Equals(y.SequenceNumber));
}
/// </exception>
public int GetHashCode(T obj)
{
if (obj == null)
{
throw new ArgumentNullException("obj");
}
return obj.GetHashCode();
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
您总是可以将类投影到序列号,因为这是您对该类感兴趣的内容,这将为您提供IEnumerable<int>可以直接从该范围中排除的内容,例如
Enumerable.Range(0, 1000000).Except(chqList.Select(c => c.SequenceNumber));
Run Code Online (Sandbox Code Playgroud)
这将返回丢失的序列号.请注意,这假定chqList是一个MyClass对象列表.
| 归档时间: |
|
| 查看次数: |
1625 次 |
| 最近记录: |