Just nu i M3-nätverket
Gå till innehåll
i3o6

LÖST LINQ-uttryck

Rekommendera Poster

Har skapat tabeller med code first i entity framework:

    public class Post
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Body { get; set; }
        public virtual ICollection<Tag> Tags { get; set; }
    }

    public class Tag
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public ICollection<Post> Posts { get; set; }
    }

Jag får en sträng-lista med taggnamn och vill hämta ut alla Post:er som innehåller samtliga Tag:ar

 

Det här är det närmaste jag kommit:

var model = db.Posts.Where(p=>p.Tags.All(t=>tagList.Contains(t.Name)));

Vilket returnerar Post:er som innehåller någon av taggarna - och det är ju exakt vad jag inte vill ha, så jag är kanske inte jättenära en lösning.

Redigerad av i3o6

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Löst * 2:

var model = db.Posts.Where(p => !tagList.Except(p.Tags.Select(t => t.Name)).Any());

var model = db.Posts.Where(p => p.Tags.Select(t => t.Name).Intersect(tagList).Count() == tagList.Count);

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...