У меня есть 2 массива разных типов: один из файлов, а один из базы данных SQL - LINQ to SQL. Я пытаюсь удалить не совпадающие элементы из моей базы данных с элементами, которые я получаю через файл. (Я упоминаю об этом, если есть более эффективный способ сделать то, что я пытаюсь достичь).LINQ return non-matching items query
Я подготовил парочку анонимных массивов, чтобы показать, что я пытаюсь сделать:
var a = new[] {
new { code = "A", subid = 1, test = "dunno" }, new { code = "A", subid = 2, test = "dunno" }, new { code = "A", subid = 3, test = "dunno" },
new { code = "B", subid = 1, test = "dunno" }, new { code = "B", subid = 2, test = "dunno" }, new { code = "B", subid = 3, test = "dunno" }
};
var c = new[] {
new { code = "A", subid = 1 }, new { code = "A", subid = 2 },
new { code = "B", subid = 1 }, new { code = "B", subid = 2 }
};
мне это нужно, чтобы вернуть предметы, которые не соответствуют, например, new { code = "A", subid = 3 }
и new { code = "B", subid = 3 }
var b = (from items in a
where c.Any(d => d.code == items.code && d.subid != items.subid)
select items);
и
var b = (from items in a
where c.Where(d=> d.code == items.code).Any(d => d.subid != items.subid)
select items);
Я пробовал это, но они просто, кажется, возвращает все элементы. Как мне это сделать?
Анонимный массив в моем приложении не имеет соответствующих свойств. будет ли это работать? – Smithy
Ну. Для анонимных объектов вам необходимо реализовать операции равенства. ;) –
@ J.Steen уже реализовано :) –