2015-07-27 4 views
0

i'm tryin для получения данных из одного списка, которые не находятся в другом списке, список 2 имеет одинаковый тип данных, два списка - список статей с разными данными :выберите объекты из 1 списка, которых нет в другом списке

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(); 

но не дают мне ожидаемый результат, они дают мне больше статей, которые suposed.

Любая идея, почему не работает?

также я стараюсь

LstVeryLowRotation.except(Lst.LowRotation) 

Я знаю, что supossed работать, я испытал лишь несколько данных и работает нормально, но когда я добавить данные из DataReader это не так, и странное дело в том, что когда я запускаю данные, которые не входят в один список или другой список, это должно быть невозможно !!!

Я отредактировал названия, чтобы быть более четкими.

+5

https://msdn.microsoft.com/en-us/library/vstudio/Bb908822(v=VS.90).aspx 'List.Except' –

+1

возможное duplicate of [Использовать LINQ для получения элементов в одном списке <>, которые не находятся в другом списке <>] (http://stackoverflow.com/questions/3944803/use-linq-to-get-items-in-one- list-that-are-not-in-another-list) – PiotrWolkowski

+0

@PiotrWolkowski Заметили ли вы, что принятый ответ на вопрос - это также то, что пытался проверить ОП –

ответ

2

Попробуйте Enumerable.Except() - Я думаю, что он будет делать именно то, что вы хотите, если вы добавите переопределение равенства для класса Articles, говорящего об этом, чтобы сравнить свойство Articulo.

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

+0

Это действительно элегантный способ получить желаемый результат **, но не ответ ** на вопрос («Любая идея, почему не работает?»). – dovid

+0

Да, я зондирую 'lista2 = lista2.except (lista)' , следуя примеру, но я получаю точный результат – Ion

0

Наконец, все люди были правы, проблема- ИТС в базе данных, ArticleCode есть много странных символов, которые должны были сделать сравнение не работает.

СПАСИБО ВСЕМ ЛЮДЯМ ПОМОГАТЬ