首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

求高效率查旬语句,万分感谢

2013-02-24 
求高效查旬语句,万分感谢 public class StatusA{public String StatusID { get set }public String BID

求高效查旬语句,万分感谢


 public class StatusA
    {
        public String StatusID { get; set; }
        public String BID { get; set; }
    }

    public class StatusB : StatusA
    {
        public Boolean IsDone { get; set; }
    }

    public class ValueA
    {
        public String VID { get; set; }
    }
    public class ValueB:ValueA
    {
        public String StatusID { get; set; }
        public String BID { get; set; }
    }

    public class ddd
    {
        public List<StatusA> Statusa = new List<StatusA>();
        public List<StatusB> Statusb = new List<StatusB>();
        public List<Value> ValueA = new List<Value>();
        public List<Value> ValueB = new List<Value>();


    }


如上结构,需要查出的结果 为
Statusa与Statusb -->StatusID,BID相同,并且Statusb中的S==true;
上述结果与ValueA-->StatusID,BID相同,并且ValueA的VID在ValueA中不存在;

求最快之linq语句,万分感谢!
另如有非集合建议,请不吝赐教!

[解决办法]
用linq吧
 var s = from sa in Statusa
                    from sb in Statusb
                    from va in ValueA
                    from vb in ValueB
                    where sa.BID.Trim() == sb.BID.Trim() && sb.IsDone && sb.StatusID.Trim() == vb.StatusID.Trim() && sb.BID == vb.BID && vb.VID.Trim() == va.VID.Trim()
                    select new { sa, sb, va, vb };
[解决办法]
各位早安。。。
我是群里来的。。。
[解决办法]
引用:
更正一下需求
Statusa与Statusb -->StatusID,BID相同,并且Statusb中的S==true;
上述结果与Valueb-->StatusID,BID相同,并且Valueb的VID在ValueA中不存在;


SQL code?12345select from StatusA as sa inner joinStatusB as sb o……

where 

vs.VID is null

vs是什么?  
[解决办法]

var query=from sa in StatusA
          join sb in StatusB on new {sa.StatusID , sa.BID} equals new {sb.StatusID ,sb.BID}
          where sb.IsDone
          join vb in 
Valueb on new {sb.StatusID,sb.BID} equals new {vb.StatusID,vb.BID}
          join va in 
Valuea.Where(x=>!x.VID.HasValue) on vb.VID equlas va.VID into leftJoin
          from va in leftJoin.DefalultIfEmpty()
          select new {sa,sb,vb,v=va==null?null:va};

[解决办法]
是否真的要 左连接 右连接,最后的结果是什么?
是 ValueB 的集合还是 所有四个类的集合 ?
  var query1 = Statusb.Where(w => w.IsDone && Statusa.Any(a => a.StatusID == w.StatusID && a.BID == w.BID));
            IEnumerable<ValueB> query2 = ValueB.Where(w => query1.Any(a => a.BID == w.BID && a.StatusID == w.StatusID) && ValueA.All(a => a.VID != w.VID));

[解决办法]
 用Sql效率最高了。

热点排行