Złożone przeszukanie Listy.

0

Cześć,

Mam dość spory problem z napisaniem poprawnego fragmentu kodu.

    public class Post
    {
        (...)
        public List<Topic> Topics { get; set; }
    }

    public class Topic
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }

 public IEnumerable<Post> Posts
{
(...)
}


string[] idsToCheck = new string[]{"1","2"}.

Teraz fragment kodu, który przysparza mi problemy:

 List<Post> postsList = Posts.Where(p => topicsA.Contains(p.Topics.FirstOrDefault().Id.ToString())).ToList();

Chcę wyciągnąć wszystkie posty, których przynajmniej jeden z topics.Id zawiera się w tablicy idsToCheck.

1
var idsToCheck = new int[] { 1, 2 };
var result = Posts.Where(p => idsToCheck.Any(id => p.Topics.Any(t => p.Id == t.Id));

Pisane z palca.

0
ŁF napisał(a):
var idsToCheck = new int[] { 1, 2 };
var result = Posts.Where(p => idsToCheck.Any(id => p.Topics.Any(t => p.Id == t.Id));

Pisane z palca.

Dzięki.

Pytanie tylko jak poprawić, żeby nie zwracało Postów, które mają jeden Temat na liście.

0
Krwawy Kot napisał(a):
ŁF napisał(a):
var idsToCheck = new int[] { 1, 2 };
var result = Posts.Where(p => idsToCheck.Any(id => p.Topics.Any(t => p.Id == t.Id));

Pisane z palca.

Dzięki.

Pytanie tylko jak poprawić, żeby nie zwracało Postów, które mają jeden Temat na liście.

Ok, już mam. Powinno być:

<quote="1242774">

var idsToCheck = new int[] { 1, 2 };
var result = Posts.Where(p => idsToCheck.Any(id => p.Topics.Any(t => **id** == t.Id));

1 użytkowników online, w tym zalogowanych: 0, gości: 1