2013-08-16 80 views
1

如果我有一个像实体框架查询的多标签云相关的帖子

[Table("MTag")] 
public class Tag 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int TagId { get; set; } 
    public string TagLabel { get; set; } 
    public virtual ICollection<TagRef> RefTags { get; set; } 
} 

[Table("TagRef")] 
public class TagRef 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int TagRefId { get; set; } 
    public virtual Tag Tag { get; set; } 
    public virtual ICollection<Post> Posts { get; set; } 
} 

[Table("Post")] 
public class Post 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int PostId { get; set; } 
    public UserProfile User { get; set; } 
    public string Title { get; set; } 
    public string Description { get; set; } 
    public string PostGuid { get; set; } 
    public string Make { get; set; } 
    public string Model { get; set; } 
    public virtual ICollection<MTagRef> Tags { get; set; } 
    public string ImageFileName { get; set; } 
    public int Price { get; set; } 
    public int ImageWidth { get; set; } 
    public int ImageHeight { get; set; } 

} 

什么是可能的查询选择所有匹配的岗位模型类?你能给我一个提示,如果我有像Car,Mobile这样的标签如何设置查询吗?

+0

能不能请您详细说明更多*选择所有匹配的职位*?这里的匹配是基于哪些条件? –

+0

匹配到什么? –

+0

我想选择所有与车辆或电子设备相匹配的标签。 –

回答

-1

简单的提示:

var tags = db.Post.Where(m=>m.YourPropertyName == "YourPropertyValue").ToList(); 

这里

YourPropertyName = with which property you want to match. 

YourPropertyValue = Value of your property. 
0

你有一个像汽车,手机,汽车,电子和标签......。

当你添加一个帖子,你添加一些标签给它。像这个网站(Stackoverflow),当你添加一个问题,你也添加一些标签。现在,您要选择带有指定标签的所有帖子。

以下方法返回的所有帖子有一些标签:

public static IQueryable<Post> PostsWithTags(List<int> tagIds) 
{ 
     Context c = new Context(); 
     var Query = (from Group in c.TagRefs.GroupBy(g => g.TagId) let GroupTags = Group.Select(g => g.TagId) where tagIds.All(gt => GroupTags.Contains(gt)) select Group.Select(g => g.Post).FirstOrDefault()); 

     return Query ; 
}