Я пытаюсь написать метод, который в конечном итоге даст мне набор записей, которые больше не имеют соответствующей записи в другой коллекции, к которой я обращаюсь.Фильтрация списка, за исключением нескольких свойств
Структура нечто похожее на:
public class A
{
int id {get; set;}
int recId {get; set;}
string category {get; set;}
}
public class B
{
int recId {get; set;}
string category {get; set;}
}
До сих пор у меня есть следующий кусок LINQ, чтобы дать мне мою коллекцию недостающих записей, но это только дает мне никакого recId
, что отсутствует:
var noLongerHaveRecordInCollectionB =
CollectionA.Select(x => x.recId).Except(CollectionB.Select(x => x.recId));
мне нужно List<A>
каждой записи которых:
1.) больше не имеет recId
провел в го e CollectionB
. не
ИЛИ
2.) больше не имеет запись, которая имеет соответствие recId
и category
в CollectionB
Для примера вполне возможно, что в пределах CollectionA
есть 2 записи с одинаковыми recId
, но разными category
.
Если CollectionB
сейчас только содержит 1 запись для этого recId
Я хотел бы удалить запись в CollectionA
, не имеющей соответствующей категории.
Так что главный вопрос заключается в том, как я могу заполнить noLongerHaveRecordInCollectionB
со всеми <T>
элементов а, которые были проверены на CollectionB
, а не только recId
, как это в настоящее время делает, я хочу, чтобы весь объект.
редактирование: вход/результат
CollectionA
1,2254, категории А
2,2236, категории А
3,2415, категория B
4,1275, Категория B < --- то же лицо, что и ниже, разн категории
5,1275, Категория C < --- тот же человек, как и выше, разн категория
CollectionB
2254, Категория А
2415, Категория B
1275 Категория C
Ожидаемый R esult
Я хотел бы ожидать (от CollectionA) следующие идентификаторы, которые будут выделены в моем списке для удаления: 2, 4
'CollectionA.Where (х => CollectionB.Select (у => y.recId) .Contains (x.recId)) 'даст вам записи, а не только идентификаторы. – Alexander
Это не относится к категории? – JsonStatham
Вы всегда можете использовать методы набора, такие как 'Enumerable.Except' и использовать другой метод set' Join', чтобы получить полные данные. –