首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AsEnumerable的意义?

AsEnumerable的意义?
EN

Stack Overflow用户
提问于 2011-09-29 18:52:09
回答 2查看 1K关注 0票数 0
代码语言:javascript
复制
var query = 
    from dt1 in dtStudent.AsEnumerable()
    join dt2 in dtMarks.AsEnumerable()
        on dt1.Field<int>("StudentID")
        equals dt2.Field<int>("StudentID")
    select new StudentMark
    {
        StudentName = dt1.Field<string>("StudentName"),
        Mark = dt2.Field<int>("Mark")
    };

在上面的代码中,AsEnumerable的意义是什么?如果.NET框架中不存在AsEnumerable,那么开发人员执行上述任务的方法是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-09-29 18:55:21

假设我的解释是正确的,那么它调用的是DataTableExtensions.AsEnumerable()。没有它(或类似的东西),你就不能使用LINQ to Objects,因为DataTable不实现IEnumerable<T>,只能实现IEnumerable

注意,另一种选择是使用Cast<DataRow>,但这将是微妙的不同,因为它将直接在Cast中使用DataTableGetEnumerator,而我认为EnumerableRowCollection对数据表做了稍微时髦的事情。它不太可能显示出任何真正的变化,除了可能的轻微性能差异。

票数 3
EN

Stack Overflow用户

发布于 2011-09-29 19:00:23

.AsEnumerable()扩展只是将实现IEnumerable<T>的内容转换为IEnumerable<T>的简写形式

因此,如果xsint[],则可以调用xs.AsEnumerable()而不是(xs as IEnumerable<int>)。它使用类型推断来避免需要显式地键控xs的类型。

以下是由Reflector.NET提取的代码:

代码语言:javascript
复制
public static IEnumerable<TSource> AsEnumerable<TSource>(
    this IEnumerable<TSource> source)
{
    return source;
}

但在这种情况下,我想我必须同意Jon的观点。它可能来自System.Data.DataSetExtensions程序集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7596229

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档