ToArray、ToList、ToDictionary、ToLookup、OfType

#region using
using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Text;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Collections.Generic;
using System.Collections;
#endregion

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        #region 用ToArray()将查询结果转化为数组
        Response.Write("<hr>用ToArray将查询结果转化位数组<br>");
        var students = from student in GetStudents()
                       orderby student.Age
                       select student.Name;
        var nameArray = students.ToArray();
        foreach (var name in nameArray)
        {
            Response.Write(string.Format("<span class='result'>{0}</span>", name));
        }
        #endregion 

        #region 用ToList()将查询结果转化为List集合
        Response.Write("<hr>用ToList()将查询结果转化为List集合<br>");
        var students1 = from student in GetStudents()
                       where student.Age>21
                       orderby student.Age
                       select student.Name;
        var nameArray1 = students1.ToList();
        nameArray1.Add("newlist");
        foreach (var name in nameArray1)
        {
            Response.Write(string.Format("<span class='result'>{0}</span>", name));
        }
        #endregion 

        #region 用ToDictionary()将查询结果转化为Dictionary
        Response.Write("<hr>用ToDictionary()将查询结果转化为Dictionary<br>");
        var studentDict = GetStudents().ToDictionary(student => student.Name);
        var Y = studentDict["YOUNG"];
        Response.Write(string.Format("<span class='result'>YOUNG:{0},{1},{2}</span>", Y.Name, Y.Age, Y.Language));
 
          ToDictionary可以传两个lambada表达式,第一个是Key,第二个就是Value。
   //加载XML文件
    XDocument xdoc = XDocument.Load(fileName);
    XElement root = xdoc.Element("message");

  //读取XML内容
   messages = root.Elements("add")
    .ToDictionary(
        key => key.Attribute("key").Value,
        value => value.Attribute("value").Value
    );
 
        #endregion 

        #region 用OfType过滤查询结果中的类型
        Response.Write("<hr>用OfType过滤查询结果中的类型<br>");
        object[] objects = { 1, "love",GetStudents()[1], 2.1, null, GetStudents()[3],"young"};
        var students2 = objects.OfType<Student>();
        foreach (var student in students2)
        {
            Response.Write(string.Format("<span class='result'>{0}</span>", student.Name));
        }
        #endregion
    }

    #region 构造一个学生集合体
    private List<Student> GetStudents()
    {
        List<Student> students = new List<Student> 
             new Student{ Name="YOUNG", Age=25, Language="Chinese"},
             new Student{ Name="JESSIE", Age=21, Language="Scotland"},
             new Student{ Name="KELLY", Age=18, Language="English"},
             new Student{ Name="JUNE", Age=20, Language="English"},
             new Student{ Name="ADRIAN", Age=22, Language="Italy"},
             new Student{ Name="BRUCE", Age=17, Language="Scotland"},
             new Student{ Name="BRANT", Age=30, Language="Germany"},
             new Student{ Name="BEN", Age=25, Language="Chinese"}
        };
        return students;
    }
    #endregion
}

#region 学生类
class Student
{
    public int Age { get; set; }
    public string Name { get; set; }
    public string Language { get; set; }
}
#endregion

显示结果
 
ToDictionary() 不会处理重复键,该用  ToLookup()来处理重复键 来解决
 
var data = new[]{
            Tuple.Create("001", "James"),
            Tuple.Create("002", "Linda"), Tuple.Create("003", "Frank"), Tuple.Create("004", "Jack"), Tuple.Create("002", "Rose"), Tuple.Create("001", "Lynn"), Tuple.Create("008", "Luke") };

var dict = data.ToLookup(t => t.Item1, t => t.Item2)
            .ToDictionary(t => t.Key, t => t.First());
 

转载于:https://www.cnblogs.com/wyongqi/p/7685278.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是C#中常用的一些Enumerable和Queryable方法的功能含义及使用实例: 1. AsEnumerable(): 将一个序列向上转换为一个IEnumerable,强制将Enumerable类下面的查询操作符绑定到后续的子查询当中。 示例: ```csharp List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; IEnumerable<int> enumerable = numbers.AsEnumerable(); ``` 2. AsQueryable(): 将一个序列向下转换为一个IQueryable,它生成了一个本地查询的IQueryable包装。 示例: ```csharp List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; IQueryable<int> queryable = numbers.AsQueryable(); ``` 3. Cast<T>(): 将集合中的元素转换为指定类型。 示例: ```csharp ArrayList list = new ArrayList { 1, 2, 3, 4, 5 }; IEnumerable<int> enumerable = list.Cast<int>(); ``` 4. OfType<T>(): 根据指定类型筛选集合中的元素。 示例: ```csharp ArrayList list = new ArrayList { 1, "two", 3, "four", 5 }; IEnumerable<string> enumerable = list.OfType<string>(); ``` 5. ToArray(): 将集合转换为数组。 示例: ```csharp List<int> numbers = new List<int> { 1, 2, 3, 4, 5 }; int[] array = numbers.ToArray(); ``` 6. ToDictionary<TKey, TValue>(): 根据键选择器函数将元素放入Dictionary<TKey, TValue>。 示例: ```csharp List<string> words = new List<string> { "apple", "banana", "cherry" }; Dictionary<string, int> dictionary = words.ToDictionary(word => word, word => word.Length); ``` 7. ToList(): 将集合转换为List。 示例: ```csharp IEnumerable<int> numbers = Enumerable.Range(1, 5); List<int> list = numbers.ToList(); ``` 8. ToLookup<TKey, TElement>(): 根据键选择器函数将元素放入Lookup<TKey, TElement>(一对多字典)。 示例: ```csharp List<string> words = new List<string> { "apple", "banana", "cherry" }; ILookup<char, string> lookup = words.ToLookup(word => word[0]); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值