У меня есть класс следующим образом:
public class Tag {
public Int32 Id { get; set; }
public String Name { get; set; }
}
И у меня есть два списка тегов:
List<Tag> tags1;
List<Tag> tags2;
Я использовал LINQ, чтобы получить идентификаторы каждого списка тэгов. И затем:
List<Int32> ids1 = new List<Int32> { 1, 2, 3, 4 };
List<Int32> ids2 = new List<Int32> { 1, 2, 3, 4 };
List<Int32> ids3 = new List<Int32> { 2, 1, 3, 4 };
List<Int32> ids4 = new List<Int32> { 1, 2, 3, 5 };
List<Int32> ids5 = new List<Int32> { 1, 1, 3, 4 };
ids1 должно быть равно ids2 и ids3... Оба имеют одинаковые числа.
ids1 не должен быть равным ids4 и ids5...
Я попробовал следующее:
var a = ints1.Equals(ints2);
var b = ints1.Equals(ints3);
Но оба дают мне ложь.
Каков самый быстрый способ проверить, совпадают ли списки тегов?
UPDATE
Я ищу POSTS, которые TAGS точно такие же, как TAGS в книге.
IRepository repository = new Repository(new Context());
IList<Tags> tags = new List<Tag> { new Tag { Id = 1 }, new Tag { Id = 2 } };
Book book = new Book { Tags = new List<Tag> { new Tag { Id = 1 }, new Tag { Id = 2 } } };
var posts = repository
.Include<Post>(x => x.Tags)
.Where(x => new HashSet<Int32>(tags.Select(y => y.Id)).SetEquals(book.Tags.Select(y => y.Id)))
.ToList();
Я использую Entity Framework, и я получаю сообщение об ошибке:
Исключение типа "System.NotSupportedException" произошло в mscorlib.dll, но не было обработано в коде пользователя
Дополнительная информация: LINQ to Entities не распознает метод 'Boolean SetEquals (System.Collections.Generic.IEnumerable`1 [System.Int32])', и этот метод не может быть переведен в выражение хранилища.
Как это решить?