读书人

多对多表查询的有关问题

发布时间: 2012-03-25 20:55:16 作者: rapoo

多对多表查询的问题
hi
又是我。
问一个多对多表查询的问题
先上相关代码吧。有精简

C# code
  public class Tasks    {        public Tasks()        {            this.Tags = new List<Tag>();        }        public int TaskId { get; set; }        public int UserId { get; set; }        public string TaskName {get;set;}        public virtual UserInfo UserInfo { get; set; }        public virtual ICollection<Tag> Tags { get; set; }    }public class Tag    {        public Tag()        {            this.Tasks = new List<Tasks>();        }        public int TagId { get; set; }        public int UserId { get; set; }        public string TagName { get; set; }        public virtual UserInfo UserInfo { get; set; }        public virtual ICollection<Tasks> Tasks { get; set; }    }                   //Mapping             // Relationships            this.HasMany(t => t.Tags)                .WithMany(t => t.Tasks)                .Map(m =>                    {                        m.ToTable("TaskTag");                        m.MapLeftKey("TaskId");                        m.MapRightKey("TagId");                    });


这样就生成了三张表
Tasks TaskTag Tag

现在想查某用户下,所有标注了某 TAG 的 task
如果用 SQL 语句写的话是这样的
SQL code
select tasks.* from tasksleft join tasktag on tasks.taskid = tasktag.taskidleft join tag on  tag.tagid = TaskTag.tagid where tag.tagname='test'


现在我的项目用的是 EF4.1 + Repository 模式。
我比较笨。只能写出

var q = from c in taskRepository.GetMany(o => o.UserId == uesrId)
join t in tagRepository.GetMany( g => g.TagName == tagName)

这样的代码了。
后面的写不出来了。
请各位高手帮忙看看。后面的代码如何写





[解决办法]
完整例子自己Q我,我发你,昨晚我看见你的信息了,太困了,就睡了

读书人网 >.NET

热点推荐