2.3.13 ToArray、 ToList、ToDictionary、ToLookup

  • 评论:0
  • 浏览:526
  • RSS:30
文章类型:原创

l  ToArray:将查询结果转化成为数组,此函数不延时加载。

例:

  protected void btnToArray_Click(object sender, EventArgs e)

    {

        ProvinceCityDataContext dal = new ProvinceCityDataContext();

        string[] strs = dal.Cities.Select(s => s.CityName).ToArray();

        foreach (string str in strs)

            Response.Write(str + "<br>");

}

 

protected void btnToArray1_Click(object sender, EventArgs e)

    {

        ProvinceCityDataContext dal = new ProvinceCityDataContext();

        string[] strs = (from c in dal.Cities select c.CityName).ToArray();

        foreach (string str in strs)

            Response.Write(str + "<br>");

    }

以上执行结果均为返回一个城市列表的字符串数组。

 

 

l  ToList:将查询结果创建成一个List集合,此函数不延时加载。

例:

  protected void btnToList_Click(object sender, EventArgs e)

    {

        ProvinceCityDataContext dal = new ProvinceCityDataContext();

        var q = dal.Cities.ToList();

        foreach (var i in q)

            Response.Write(i.CityName);

    }

l  ToDictionary:将查询结果创建成一个键/(Key/Value) 的数据字典。由于每一个Key必须唯一,不可重复,故产生的结果是一对一的关系,此函数不延时加载

例:

    protected void btnToDictionary_Click(object sender, EventArgs e)

    {

        ProvinceCityDataContext dal = new ProvinceCityDataContext();

        var q = dal.Cities.ToDictionary(s => s.CityName,s=>s.ID);

        foreach(var i in q)

        {

            Response.Write(i.Key + "|" + i.Value+"<br>");

        }

       

}

以上为级联表达式

    protected void btnToDictionary1_Click(object sender, EventArgs e)

    {

        ProvinceCityDataContext dal = new ProvinceCityDataContext();

        var q = (from c in dal.Cities select c).ToDictionary(s => s.CityName, s => s.ID);

        foreach (var i in q)

        {

            Response.Write(i.Key + "|" + i.Value + "<br>");

        }

 }

以上执行结果为返回一个包含城市名称、城市ID的字典集合。读者可以注意一下最后输出的值是采用Key/Value形式存在的。

※注:若我将.ToDictionary(s => s.CityName, s => s.ID);修改成.ToDictionary(s => s. ProvinceID, s => s.ID);由于省份ID可能重复,则违反了Key唯一的冲突,故会报错,请大家注意。同时也是和ToLookUp函数的区别所在。

 

l  ToLookup:将查询结果创建成一个键/(Key/Value) LookUp集合。由于每一个Key可不唯一,可重复,故产生的结果可能是一对多的关系,此函数不延时加载

例:

    protected void btnToLookup_Click(object sender, EventArgs e)

    {

        ProvinceCityDataContext dal = new ProvinceCityDataContext();

        var q = dal.Cities.ToLookup(s => s.ProvinceID, s => s.CityName);

        foreach (var i in q)

        {

            Response.Write("当前省份ID=" + i.Key+"的城市为:<br>");

            foreach (var x in i)

            {

                Response.Write(x+"<br>");

            }

        }

    }

以上执行结果为将省份相同的城市分组列表出来。