我试图从一个不在另一个列表中的列表中获取数据,2个列表具有相同的数据类型,这两个列表是不同数据的文章列表:
public class Articles
{
public string ArticleName{ get; set; }
public string ClientName { get; set; }
public DateTime Date { get; set; }
public string ProviderName { get; set; }
public string Seller{ get; set; }
public string ArticleCode { get; set; }
public float Price { get; set; }
public float Stock { get; set; }
public int MiniumUnit { get; set; }
}
List<Articles> LstLowRotation=new List<Articles>();
List<Articles> LstVeryLowRotation=new List<Articles>();
然后我在每个列表中添加数据(一些是不同的)然后:
LstVeryLowRotation = LstVeryLowRotation.Where(x => !lstLowRotation.Any
(z => z.ArticleCode == x.ArticleCode)).ToList();
但没有给我预期的结果,他们给了我更多的文章。
知道为什么不起作用?
我也试试
LstVeryLowRotation.except(Lst.LowRotation)
我知道是上班的,我只用少量数据测试并且工作正常,但是当我从datareader添加数据时它做错了,最奇怪的是当我运行时出现的数据不是在一个列表或另一个列表中,这应该是不可能的!!!
我把名字编辑得更清楚。
答案 0 :(得分:2)
尝试Enumerable.Except()
- 我认为如果为Articles类添加相等覆盖,告诉它比较Articulo
属性,它将完全符合您的要求。
https://msdn.microsoft.com/en-us/library/vstudio/Bb300779(v=VS.100).aspx
答案 1 :(得分:0)
最后所有人都是对的,问题就在数据库中,ArticleCode有许多奇怪的字符,必须使比较不起作用。
感谢所有人提供帮助