阅读背景:

深入理解 c# 第十一章 仅选择user对象的查询 范围变量和重要的投影

来源:互联网 
    class ShowAllUserNames
    {
        static void Main()//仅选择user对象名称的查询
        {
            IEnumerable<string> query = from user in SampleData.AllUsers
                                        select user.Name;
//query {System.Linq.Enumerable.WhereSelectListIterator<Model.User,string>}	
//我们使用user.Name作为投影,即可看到结果变为字符串序列,而不是User对象了。
//查询表达式的转换遵循与之前一样的规则,变为
//SampleData.AllUsers.Select(user => user.Name)
//编译器准许这样做,由于从Enumerable所选择的Select扩展方法实际具有如下
//签名
//static IEnumerable<TResult> Select<TSource,TResult>
//  (this IEnumerable<TSource> source,
//  Func<TSource,TResult> selector)
//将Lambda表达式转换为Func<TSource,TResult>的时候。
//首先根据SampleData.AllUsers的类型推断出TSource为User,这样就知道了
//Lambda表达式的参数类型,并因此将user.Name作为返回string类型的
//属性访问表达式,也就可以推断出TRsult为string。 Lambda表达式允许使用
//隐式类型参数的原因。


            foreach (string name in query)
			//先foreach 后 query 后 in  然后 select user.Name  in都会调用user.Name
			//后string name
			//"Tim Trotter"
			//"Tara Tutu"
			//"Deborah Denton"
			//"Darren Dahlia"
			//"Mary Malcop"
			//"Colin Carton"			
            {
                Console.WriteLine(name);
            }
        }
    }    class ShowAllUserNames
    {
        static



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: