2

EF 5 Code First と VS 2012 を使用しています。記事とタグのクラスがあります。各記事には、少なくとも 1 つのタグが関連付けられます。以下のクラスをご覧ください。

public class Article
{
    public int ArticleId { get; set; }
    public virtual ICollection<ArticleTag> Tags { get; set; }
}
public class Tag
{
    public int TagId { get; set; }
    public string TagName { get; set; }
}

public class ArticleTag
{
    public int ArticleId { get; set; }
    public int TagId { get; set; }

    // navigation property
    public virtual Article Article { get; set; }
    public virtual Tag Tag { get; set; }
}

以下は私が試したコードです。requestTagsには、TadgIds のリストが含まれています。repBaseは db コンテキストです。しかし、以下のコードはすべての記事を返しています。

var idList = requestTags.tags.Select(t => t.id).ToList();
 var result= repBase.GetAll<Article>().Select(tg => tg.Tags.Where(tk => idList.Contains(tk.TagId))).ToList();

指定された TagIds のリストの記事のリストを取得する方法を教えてください。

前もって感謝します。

4

1 に答える 1

5

これを探していると思います。

変化する:

  • SelectWhere
  • tg.Tags.Containstg.Tags.Any

例:

var idList = requestTags.tags.Select(t => t.id).ToList();

var result= repBase.GetAll<Article>().Where(tg => tg.Tags.Any(tk => idList.Contains(tk.TagId))).ToList();
于 2012-10-24T14:57:12.303 に答える