3月11日 Linq To SQL 学习

首先发一张Linq的图,是从LINQpad工具提供的网址down下来的,讲解啦Linq的基本查询语句,嘿嘿

接下来是

1.延迟加载(deferred loading)。

如果,在声明的时候就返回的结果集是对象的集合。你可以使用ToList() 或ToArray()方法把查询结果先进行保存,然后再对这个集合进行查询

例子:
var numbers = new List<int>();
        numbers.Add(1);

        IEnumerable<int> query = numbers.Select(n => n * 10);    

        gvList.DataSource = query;
        numbers.Add(2);

        gvList.DataBind();   //此时结果为两条,10,20

var numbers = new List<int>();
        numbers.Add(1);

        IEnumerable<int> query = numbers.Select(n => n * 10).ToList();  
        numbers.Add(2);

        gvList.DataSource = query;
        gvList.DataBind();  //保存查询结果后,为一条10

另一个比较好玩的例子是这个~

 

 IEnumerable<char> query = "Not what you might expect";

            query = query.Where(c => c != 'a');
            query = query.Where(c => c != 'e');
            query = query.Where(c => c != 'i');
            query = query.Where(c => c != 'o');
            query = query.Where(c => c != 'u');

            new string(query.ToArray());  //结果是:Nt wht y mght xpct 跟预期效果一样

            query = "Not what you might expect";

            foreach (char vowel in "aeiou")
                query = query.Where(c => c != vowel);

            new string(query.ToArray()); //结果是:Not what yo might expect 只是少了u

 

有了Reflector反编译出来的代码更容易理解

 

IEnumerable<char> query = "Not what you might expect";
    
new string(query.Where<char>(delegate (char c) {
        
return (c != 'a');
    }).Where
<char>(delegate (char c) {
        
return (c != 'e');
    }).Where
<char>(delegate (char c) {
        
return (c != 'i');
    }).Where
<char>(delegate (char c) {
        
return (c != 'o');
    }).Where
<char>(delegate (char c) {
        
return (c != 'u');
    }).ToArray
<char>());
    query 
= "Not what you might expect";
    
foreach (char vowel in "aeiou")
    {
        query 
= query.Where<char>(delegate (char c) {
            
return c != vowel;
        });
    }
    
new string(query.ToArray<char>());

 

 

 所以要注意循环和延迟加载的问题..

 

 

 

posted @ 2010-03-11 15:36  Cleary  阅读(142)  评论(0)    收藏  举报