从1列表中选择不在其他列表

时间:2015-07-27 17:17:20

标签: c# linq list

我试图从一个不在另一个列表中的列表中获取数据,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添加数据时它做错了,最奇怪的是当我运行时出现的数据不是在一个列表或另一个列表中,这应该是不可能的!!!

我把名字编辑得更清楚。

2 个答案:

答案 0 :(得分:2)

尝试Enumerable.Except() - 我认为如果为Articles类添加相等覆盖,告诉它比较Articulo属性,它将完全符合您的要求。

https://msdn.microsoft.com/en-us/library/vstudio/Bb300779(v=VS.100).aspx

答案 1 :(得分:0)

最后所有人都是对的,问题就在数据库中,ArticleCode有许多奇怪的字符,必须使比较不起作用。

感谢所有人提供帮助