本帖最后由 cwj_1314 于 2012-04-18 11:12:03 编辑

解决方案 »

  1.   

    lambda表达式中用 where(b=>b.isdelete==true)不行么
      

  2.   

    lambda表达式中用 where(b=>b.isdelete!=true)不行么
      

  3.   

    自己顶下吧!是不是ORM的机制都是这样,为了保持主从表的关联性,不能获取部分子表信息
      

  4.   

    public class Class1
        {
            public Class1()
            {
                this.Class2 = new List<Class2>();
            }        public int Id { get; set; }
            public string Id2 { get; set; }
            public virtual List<Class2> Class2 { get; set; }
        }
    public class Class2
        {
            public int Id { get; set; }
            public string ID2 { get; set; }
            public Nullable<int> Class1_Id1 { get; set; }
            Public bool IsDelete{ get; set;}
            public virtual Class1 Class1 { get; set; }
        }Class2 是 Class1的子表 mapping已经写好我想每次从数据库里面查找出来的Class1里面的Class2的IsDelete = false的所有数据
    目前我想到一个凑活的办法
    就是从直接找出Class2 IsDelete = false 的数据,InClude(Class1) 然后反取Class1的数据List<Class1> list = db.Class2.Include("Class1").Where(c=>c.Class1.IsDelete==false).ToList().Select(t => t.Class1).ToList();但是这样感觉不直接 不知道大家有没有更好的办法
    是不是Linq有什么子查询的方法能筛选主表中子表集合的方法
      

  5.   

    正确的逻辑是这样的吧?db.class1.include("class2").where(x=>x.isdelete && x.class2.isdelete).tolist()
      

  6.   

    把 EF 的 LazyLoadingEnabled 关闭了呗。(设为false)
      

  7.   

    不行啊!Class2在class1是List集合,所以点不出 && x.class2.isdelete把 EF 的 LazyLoadingEnabled 关闭了呗。(设为false)这个跟LazyLoadingEnabled也没关系!
    试过了!
      

  8.   

    你的a表和b表没有建立关系吗?如果b是a的子表,在ado.net实体数据模型里,b应该是a的导航属性。
      

  9.   

    还是多谢各位了!
    问题自己终于想出来了!不容易啊!希望对各位有帮助!var q1 = db.Class1.GroupJoin(db.Class2,
                   ee => ee.Id1,
                   me => me.Class1_Id1,
                   (ee, meCollection) =>
                       new
                       {
                           e = ee,
                           Collection = meCollection.Where(i => i.ID4 == "2")                   });
               List<Class1> S3 = q1.ToList().Select(u => u.e).OfType<Class1>().ToList();
      

  10.   

    你这样略显麻烦了 再你另一个帖子回答过你你可以看下  希望对你有帮助http://topic.csdn.net/u/20120419/11/58bc8814-2dc9-4102-88a3-2d36e8f60016.html?45871