linq - to - entities查询中的select子句问题

时间:2015-08-12 13:41:47

标签: c# performance entity-framework linq-to-entities

您好我正在使用代码优先方法,我定义了以下模型:

public partial class tmmodel
    {
        public tmmodel()
        {
            this.tmmodel_L10n = new HashSet<tmmodel_L10n>();
        }

        public int id { get; set; }
        public int Order { get; set; }
        public bool Active { get; set; }

        public virtual ICollection<tmmodel_L10n> tmmodel_L10n { get; set; }
    }


  public partial class tmmodel_L10n
    {
        public int modelid { get; set; }
        public int CultureId { get; set; }
        public string Title { get; set; }
        public string Text { get; set; }

        public virtual tmmodel tmmodel { get; set; }
    }

所以我想进入一个匿名类 - 我的tmodel的id,Active和order属性以及tmodel_L10中的标题:

使用Linq i MANAGED获取结果 - 但是当我尝试使用Linq - to - sql时 - 我遇到了一些问题:

 var items = from i in dc.tmmodel
              join l10n in dc.tmmodel_L10n on new { i.id, cid = 1 } equals new { l10n.modelid, cid = l10n.CultureId }
                select new
                {
                    id = i.id,
                      i.Order,
                      i.Active,
                      l10n.Title,
                  };

这是我的 - linq引用查询,你可以看到我没有任何访问Title属性的权限:

 var linqtosqlitems = dc.tmmodel
.Include(x => x.tmmodel_L10n)
.Select(l => new {id = l.id,l.Active,**l.tmmodel_L10n.??**}).ToList();

1 个答案:

答案 0 :(得分:0)

通过使用include Linq创建“子”表的Enumarable,因为它可以是一对多的关系。如果您确定“子表”中只有一条记录,您可以这样:

var linqtosqlitems = dc.tmmodel
.Include(x => x.tmmodel_L10n)
.Select(l => new {id = l.id,l.Active,l.tmmodel_L10n.FirstOrDefault().Title}).ToList();