转换数据类型 (C#)

转换方法可更改输入对象的类型。

LINQ 查询中的转换运算可用于各种应用程序。 以下是一些示例:

方法

下表列出了执行数据类型转换的标准查询运算符方法。

本表中名称以“As”开头的转换方法可更改源集合的静态类型,但不对其进行枚举。 名称以“To”开头的方法可枚举源集合,并将项放入相应的集合类型。

方法名 描述 C# 查询表达式语法 详细信息
AsEnumerable 返回类型化为 IEnumerable<T> 的输入。 不适用。 Enumerable.AsEnumerable
AsQueryable 将(泛型)IEnumerable 转换为(泛型)IQueryable 不适用。 Queryable.AsQueryable
Cast 将集合中的元素转换为指定类型。 使用显式类型化的范围变量。 例如:

from string str in words
Enumerable.Cast

Queryable.Cast
OfType 根据其转换为指定类型的能力筛选值。 不适用。 Enumerable.OfType

Queryable.OfType
ToArray 将集合转换为数组。 此方法强制执行查询。 不适用。 Enumerable.ToArray
ToDictionary 根据键选择器函数将元素放入 Dictionary<TKey,TValue>。 此方法强制执行查询。 不适用。 Enumerable.ToDictionary
ToList 将集合转换为 List<T>。 此方法强制执行查询。 不适用。 Enumerable.ToList
ToLookup 根据键选择器函数将元素放入 Lookup<TKey,TElement>(一对多字典)。 此方法强制执行查询。 不适用。 Enumerable.ToLookup

查询表达式语法示例

下面的代码示例使用显式类型化的范围变量将类型转换为子类型,然后才访问仅在此子类型上可用的成员。

class Plant
{
    public string Name { get; set; }
}

class CarnivorousPlant : Plant
{
    public string TrapType { get; set; }
}

static void Cast()
{
    Plant[] plants = new Plant[] {
        new CarnivorousPlant { Name = "Venus Fly Trap", TrapType = "Snap Trap" },
        new CarnivorousPlant { Name = "Pitcher Plant", TrapType = "Pitfall Trap" },
        new CarnivorousPlant { Name = "Sundew", TrapType = "Flypaper Trap" },
        new CarnivorousPlant { Name = "Waterwheel Plant", TrapType = "Snap Trap" }
    };

    var query = from CarnivorousPlant cPlant in plants
                where cPlant.TrapType == "Snap Trap"
                select cPlant;

    foreach (Plant plant in query)
        Console.WriteLine(plant.Name);

    /* This code produces the following output:

        Venus Fly Trap
        Waterwheel Plant
    */
}

请参阅