
SourcefilenameList包含1.txt,2.txt,3.txt,4.txt文件
而DestinaitonList有1.txt,2.txt.
我想写一个linq查询来找出SourceList中哪些文件在Destinationfile列表中不存在.
例如这里的输出将是3.txt和4.txt.
我是通过foreach声明完成的.但现在我想通过使用liNQ(C#)来做同样的事情.
编辑:
我的代码是
List<fileList> sourcefilenames = new List<fileList>();sourcefilenames.Add(new fileList { filenames = "1.txt" });sourcefilenames.Add(new fileList { filenames = "2.txt" });sourcefilenames.Add(new fileList { filenames = "3.txt" });sourcefilenames.Add(new fileList { filenames = "4.txt" });List<fileList> destinationfilenames = new List<fileList>();destinationfilenames.Add(new fileList { filenames = "1.txt" });destinationfilenames.Add(new fileList { filenames = "2.txt" });IEnumerable<fileList> except = sourcefilenames.Except(destinationfilenames); fileList是一个简单的类,只有一个属性filenames类型为string.
class fileList { public string filenames { get; set; } }解决方法 不太难做到.在您的fileList类中,创建一个继承自IEqualityComparer<>的子类. public class fileListComparer : IEqualityComparer<fileList>{ public bool Equals(fileList x,fileList y) { if (x == null || y == null) { return false; } return x.filenames.Equals(y.filenames,StringComparison.OrdinalignoreCase); } public int GetHashCode(fileList obj) { return base.GetHashCode(); }} 然后当您调用Except时,请使用Comparer
IEnumerable<fileList> except = sourcefilenames.Except(destinationfilenames,new fileList.fileListComparer() );总结
以上是内存溢出为你收集整理的c# – 除非在LINQ to Objects中模拟SQL,否则不在OR中全部内容,希望文章能够帮你解决c# – 除非在LINQ to Objects中模拟SQL,否则不在OR中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)