当前位置:编程学习 > C#/ASP.NET >>

请教Linq中Group By 的字段如何根据条件改变


 public bool CheckIsRepeat(List<CSD_ORD_PosData> TxtList)
    {
        var q = from p in TxtList
                //group p by new { p.BankCardID, p.TradingCode, p.TradingTime } into g
                group p by new { p.OrderID, p.PinID, p.CertificateNo, p.BatchID} into g
                where g.Count() > 1
                select new
                {
                    g.Key
                };
        if (q.Count() > 0)
            return false;

        return true;
    }


想实现 string.IsNullOrEmpty(p.OrderID) ? p.Phone : p.OrderID这种效果,订单为空,使用手机号分组 --------------------编程问答-------------------- 增加一个只读属性OrderOrPhone,get{return string.IsNullOrEmpty(p.OrderID) ? p.Phone : p.OrderID;}
然后根据这个属性排序 --------------------编程问答--------------------
public bool CheckIsRepeat(List<CSD_ORD_PosData> TxtList)
    {
        var q = (from p in TxtList
                where !string.IsNullOrEmpty(p.OrderID) 
                group p by new { p.OrderID, p.PinID, p.CertificateNo, p.BatchID} into g
                where g.Count() > 1
                select g.Key).Count();

       var p = (from p in TxtList
                where string.IsNullOrEmpty(p.OrderID) 
                group p by new { p.Phone, p.PinID, p.CertificateNo, p.BatchID} into g
                where g.Count() > 1
                select g.Key).Count();

        if (p+q > 0)
            return false;
 
        return true;
    }
补充:.NET技术 ,  LINQ
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,