0

我的 ASP.NET MVC 项目有一些

章节类

和相关的

标记类

它们具有多对多的关系,虽然一个标签有多个章节,而且一章有多个标签。

我的问题是:我想通过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; }
}

也适用于分贝:

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();

正如我上面解释的那样;它给

“你应该在查询中使用字符串、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 回答