码迷,mamicode.com
首页 > Windows程序 > 详细

LINQ系列:C#中与LINQ相关特性

时间:2014-10-20 23:03:52      阅读:408      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   os   ar   使用   for   strong   

1. 匿名类型

  通过关键字var定义匿名类型,编译器将根据运算符右侧表达式的值来发出一个强类型。

  使用匿名类型时要遵守的一些基本规则:

  ◊ 匿名类型必须有一个初始化值,而且这个值不能是空值(null),因为类型是根据初始化器推断出来的;

  ◊ 匿名类型可以用于简单类型,也可以用于复杂类型。用于定义简单类型时,其价值不大。复合匿名类型需要有成员声明;

  ◊ 匿名类型不能用于类的字段;

  ◊ 匿名类型可以在for循环中用作初始化器;

  ◊ 可以使用new关键字;数组的初始化器必须使用new关键字;

  ◊ 匿名类型可以用于数组;

  ◊ 所有匿名类型都派生自Object类型;

var title = "LINQ to Object";

1.1 复合匿名类型

var product = new { Title = "LINQ to Object", UnitPrice = 10m };

1.2 在for/foreach语句中使用匿名类型

var fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
for (var i = 0; i < fibonacci.Length; i++)
{
    Console.WriteLine(fibonacci[i]);
}
var fibonacci = new int[] { 1, 1, 2, 3, 5, 8, 13, 21 };
foreach (var number in from f in fibonacci where f > 5 select f)
{
    Console.WriteLine(number);
}

1.3 匿名类型与using

using( var connection = new SqlConnection(connectionString))
{
    connection.Open();
    // ......
}

2. 数组初始化器

  使用关键字new初始化数组。

var fibonacci = new int[]{ 1, 1, 2, 3, 5, 8, 13, 21 };

3. 匿名泛型方法

Func<long, long> Factorial = delegate(long n)
{
    if (n == 1)
    {
        return 1;
    }

    long result = 1;
    for (int i = 2; i <= n; i++)
    {
        result *= i;
    }
    return result;
};

Console.WriteLine(Factorial(6));
// using System.Diagnostics;
Func<long, long> Factorial = delegate(long n)
{
    return n > 1 ? n * (long)(new StackTrace()
        .GetFrame(0)
        .GetMethod()
        .Invoke(null, new object[] { n - 1 }))
        : n;
};

Console.WriteLine(Factorial(6));

4. 自动实现属性

public string ProductName { get; set; }

  设置只读属性:

public string ProductName { get; private set; }

5.对象和集合初始化器

  对象初始化器:在不调用类的构造函数以声明性方式创建一个新的对象,并设置该对象的各个属性的值。

Product product = new Product
{
    ProductID = 1,
    ProductName = "LINQ to Object",
    UnitPrice = 10m
};

  集合初始化器用来初始化一个集合。

List<Product> products = new List<Product> { 
    new Product { ProductID = 1, ProductName = "LINQ to Object", UnitPrice = 10m },
    new Product { ProductID = 2, ProductName = "LINQ to ADO.NET", UnitPrice = 20m }
};

 

LINQ系列:C#中与LINQ相关特性

标签:style   blog   color   io   os   ar   使用   for   strong   

原文地址:http://www.cnblogs.com/libingql/p/4038888.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!