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

LINQ-uttryck


i3o6

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.

Länk till kommentar
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);
Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.



×
×
  • Skapa nytt...