zoukankan      html  css  js  c++  java
  • Csharp: Linq Query

         /// <summary>
            /// Linq 连接查询 
            /// Geovin Du
            /// 涂聚文
            /// https://docs.microsoft.com/en-us/dotnet/csharp/linq/perform-inner-joins
            /// </summary>
            /// <param name="confirmed"></param>
            /// <param name="deaths"></param>
            /// <param name="recovered"></param>
            /// <returns></returns>
            public List<HistoryList> getUnionNumber(List<History> confirmed, List<History> deaths, List<History> recovered)
            {
                List<HistoryList> list = new List<HistoryList>();
    
    
                if (recovered.Count > 0)
                {
                    HistoryList newinfo = null;
                    //1 种方法
                    var newinfto = (from d in confirmed
                                    join c in deaths on d.datename equals c.datename
                                    join s in recovered on c.datename equals s.datename
                                    select new
                                    {
                                        datename = d.datename,//
                                        numberConfirmed = d.number,//
                                        numberDeaths = c.number, //
                                        numberRecovered = s.number  //
                                    }).ToList();
                    int k = 1;
                    foreach (var ownerAndDu in newinfto)
                    {
                        newinfo = new HistoryList();
                        newinfo.Id = k;
                        newinfo.datename = ownerAndDu.datename;
                        newinfo.numberConfirmed = ownerAndDu.numberConfirmed;
                        newinfo.numberDeaths = ownerAndDu.numberDeaths;
                        newinfo.numberRecovered = ownerAndDu.numberRecovered;
                        k++;
                        list.Add(newinfo);
                    }
                   
                }
                else
                {
                    HistoryList newinfo = null;
                    //1 种方法
                    var newinfto = from d in confirmed
                                   join c in deaths on d.datename equals c.datename
                                   select new
                                   {
                                       datename = d.datename,
                                       numberConfirmed = d.number,
                                       numberDeaths = c.number
                                };
                    int k = 1;   
                    foreach (var ownerAndDu in newinfto)
                    {
                        newinfo = new HistoryList();
                        newinfo.Id = k;
                        newinfo.datename = ownerAndDu.datename;
                        newinfo.numberConfirmed = ownerAndDu.numberConfirmed;
                        newinfo.numberDeaths = ownerAndDu.numberDeaths;
                        k++;
                        list.Add(newinfo);
                    }
    
                }
    
    #region 
                //for (int i = 0; i < confirmed.Count; i++)
                //{
    
                //    HistoryList newinfo = null;
                //    if (recovered.Count > 0)
                //    {                   
            
                //        //var ss1 =confirmed.Join(deaths, p => p.datename, r => r.datename, (p, r) => p).OrderByDescending(p => p.datename).ToList();
                //        //2 种方法
                //        if (confirmed[i].datename == deaths[i].datename && confirmed[i].datename == recovered[i].datename)
                //        {
                //            newinfo = new HistoryList();
                //            newinfo.datename = confirmed[i].datename;
                //            newinfo.numberConfirmed = confirmed[i].number;
                //            newinfo.numberDeaths = deaths[i].number;
                //            newinfo.numberRecovered = recovered[i].number;
                //            list.Add(newinfo);
                //        }                   
                //    }
                //    else
                //    {    
                //        //2 种方法
                //        if (confirmed[i].datename == deaths[i].datename)
                //        {
                //            newinfo = new HistoryList();
                //            newinfo.datename = confirmed[i].datename;
                //            newinfo.numberConfirmed = confirmed[i].number;
                //            newinfo.numberDeaths = deaths[i].number;
                //            list.Add(newinfo);
                //        }
                //    }
    #endregion 
    
                
                return list;
    
            }
            /// <summary>
            /// 
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            protected void Page_Load(object sender, EventArgs e)
            {
                try
                {
                    if (!IsPostBack)
                    {
                        id = Request.QueryString["Id"];
                        type = Request.QueryString["type"];
                        country = Request.QueryString["country"];
                        province = Request.QueryString["province"];
                        Response.Write("Value:"+id + "," + type+","+country+","+province);
                        change(int.Parse(type));
                        List<Location> lodea = col.deaths.locations.Where(x => x.country == country && x.province==province).ToList();
                        //List<Location> lodea = dea.locations.Where(x => x.country == "US").ToList();
                        //List<Location> locir = conf.locations.Where(x => x.country == "US").ToList();
                        List<Location> locir = col.confirmed.locations.Where(x => x.country == country && x.province == province).ToList();
                        // List<Location> lorec = recov.locations.Where(x => x.country == "US").ToList();
                        List<Location> lorec = col.recovered.locations.Where(x => x.country == country && x.province == province).ToList();
                        //in
                        var geovindu = from geovi in col.recovered.locations
                                       where (new string[] { "china", "chile", "Canada" }).Contains(geovi.country)
                                       select geovi;
    
                        List<History> hidea = lodea[0].history;  // dea.locations.Where(x => x.country == "Yemen").ToList().Where(x => x.history.All).ToList();
                        List<History> hicor = locir[0].history;
                        List<History> hirec=new List<History>();
                        if(lorec.Count>0)
                        {
                           hirec = lorec[0].history;
                        }
                        
    
                        List<HistoryList> uniolist = new List<HistoryList>();
                        uniolist = getUnionNumber(hicor, hidea, hirec);
                        //分页查询
                        var geovin = (from du in uniolist
                                      where du.Id > 10
                                      orderby du.Id descending
                                      select du).Skip(10).Take(10); //取第11条到第20条数据             
    
                        this.GridView1.DataSource = uniolist;
                        this.GridView1.DataBind();
    
    
                    }
    
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message.ToString());
                }
            }
        }
    

      数据来源测试: https://coronavirus-tracker-api.herokuapp.com/all

  • 相关阅读:
    多继承
    NavigationController的使用
    WebService概述
    IOS block 教程
    多测师肖老师__项目讲解(12.3)
    跨平台跨服务器跨网站SSO(单点登录)方案的DEMO
    使用SQL Server Profiler
    asp.net生成高质量缩略图通用函数(c#代码),支持多种生成方式
    SQL优化实例:从运行30分钟到运行只要30秒
    测试工具的选择和使用
  • 原文地址:https://www.cnblogs.com/geovindu/p/12897598.html
Copyright © 2011-2022 走看看