0

私のASP.NETMVCプロジェクトにはいくつかあります

チャプタークラス

および関連

タグクラス

1つのタグには複数のチャプターがあり、1つのチャプターには複数のタグがありますが、それらには多対多の関係があります。

私の質問は次のとおりです。この構造内で使用してクエリを作成したいのですtag.titleが、LINQではオブジェクトを許可していません。stringint...などの変数のみを取得します。

私は少し愚かだと感じていますが、この基本的なことを理解することはできません:((私の心の中でそれを明確にするために休憩をとる必要があるかもしれません)

私のモデルは次のとおりです。

public partial class Chapter
{
    public string Id { get; set; }
    public string Subject { get; set; }
    public string Content { get; set; }
    public virtual ICollection<Tag> Tags { get; set; }
}

public partial class Tag
{
    public int? TagId { get; set; }
    public string Title { get; set; }
    public int CallCount { get; set; }
    public virtual ICollection<Chapter> Chapters { get; set; }
}

また、dbの場合:

public class DataContext : DbContext
{
    public DbSet<Chapter> Chapters { get; set; }
    public DbSet<Tag> Tags { get; set; }
}

だからここに行きます:

var tag = (from t in db.Tags where t.Title.Contains(search_word)).FirstOrDefault();
var chapters = (from c in db.Chapters where (m.Title.Contains(search_word) || m.Tags.Contains(tag)) select c).ToList();

上で説明したように、それは与えます

「クエリにはstring、guid、int...を使用する必要があります」

このクエリのエラー。私が作った論理的な失敗があると思いますが、私の脳は反応しなくなりました...

簡単に言えば; タグ名で検索したいのですが、別のアプローチがあれば喜んで聞いてみます。

どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

1

あなたが欲しい:

var tag = (from t in db.Tags 
           where t.Title.Contains(search_word)
           select t).FirstOrDefault();
var chapters = (from c in db.Chapters 
                where m.Title.Contains(search_word) 
                    || m.Tags.Any(t => t.TagId == tag.TagId)
                select c).ToList();
于 2012-05-16T13:35:11.040 に答える