Just nu i M3-nätverket
Jump to content

LINQ-uttryck


i3o6

Recommended Posts

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.

Link to comment
Share on other sites

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);
Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...