phphot

php,linux,mysql,apache

小秘密ID:phphot
902319次访问,排名33好友68人,关注者207
php,apache,mysql,linux,html,css,javascript
phphot的文章
原创 3518 篇
翻译 0 篇
转载 14 篇
评论 600 篇
phphot的公告


经典推荐!!!
离开公司时留给公司的十句话 与大家分享

史上最全的小白兔的笑话

从一则笑话分析需求的陷阱

本科差点没能毕业,工作五年后年收入过百万

从小公司到500强 80年代人的面试宝典

那些雷得我们如此销魂的台词

老IT人追忆十五年IT从业经历

汶川大地震牛B语录集锦

千百万学子未来几年的出路

大学时代影响我的人生的10件大事-前辈的经验

噩梦的那一年-程序员之路

成功的背后!(给所有IT人)

一部让大学生少奋斗10年的成功宝典

职业生涯中12个最致命的想法

华为面试,第三轮被拒,想哭

一个牛人给java初学者的建议

黑客帝国之PHP与ASP.net不得不说的故事

一个应界毕业生的深圳求职经历。

程序人生:女程序员的求职奋斗史

2008春晚诗朗诵《心里话》之程序员版

最高境界---笑到肚子疼!!!!

是非人生——一个菜鸟程序员的5年人生路

网友10年跳槽经验总结

2008年IT行业10大热门职业调查结果出炉

百度实习经验总结

一点感慨,与诸君共勉,正式告别程序员生涯

程序员V.S.编程语言你上“贼船”了吗

上海IT精英群体某些行为特征被妖魔化

五百强各大行业简介+面试流程及技巧

08年各大公司薪水最新行情全面曝光


XML聚合
feedsky
最近评论
sap99:http://www.sap99.com/
,SAP免费资料下载
SAP99资料多多

http://www.sap99.com

有很多的学习资料,推荐一下,
cjzs1108:好文,很有感触...
cjzs1108:好文,很有感触...
cjzs1108:好文,很有感触...
zhuzhao:不错,学习了,哈哈!
文章分类
收藏
    相册
    YY的图(禁)
    绝对精彩
    网上好图(禁)
    我的工作(禁)
    我的作品(禁)
    热门站
    baidu
    google
    yahoo
    存档
    订阅我的博客
    XML聚合  FeedSky

    原创 當VS2005 遇上 LINQ收藏

    新一篇: 中国大陆三所大学获授权查看微软软件平台源代码 | 旧一篇: 知识产权保护在中国是一纸空谈

    文/黄忠成
    在【极意之道-次世代.NET Framework 3.5资料库开发圣典】(好长的书名,我该取个匿称吗?哈)一书第三章中,有下面这段叙述:
    任何支援.NET Framework 2.0的程式语言都能够叫用LINQ所提供的查询函式,也就是说能使用C# 2.0来呼叫LINQ Framework 

    书中列出一小段程式码,证明事实上只要是C# 2.0,就能够使用LINQ所提供的查询函式,前提是电脑中必须安装.NET Framework 3.5。
      那好,什么时候我们会需要这种写法呢?想像一下,你可以利用LINQ查询函式来做什么?你可以将两个阵列Join起来、排序、Group、查询,你也可以 将两个XML档案Join起来,甚至可以将两个DataTable Join起来,哦!这段叙述是否挑到你最敏感的那条神经了呢?
      不过, 说归说,做归做,如果在.NET Framework 2.0中叫用LINQ,能得到什么好处呢?很明显的,你原本的专案不需要做大幅度的升级,你不需要装Visual Studio 2008,你只需安装.NET Framework 3.5,然后加入对System.Core的参考,就能得到LINQ查询函式的火力,再加入System.Xml.Linq的参考,就能得到LINQ To XML查询函式,加入System.Data.DataSetExtensions的参考,就能将两个DataTable Join起来。
      但,有了这些好处,事情真的会比较简单吗?那得视情况而定,在没有LINQ Expression支援下使用LINQ查询函式,有时会将事情变的复杂,换句话说,程式码可能变多了。不过,大部份情况下,我相信使用LINQ查询函式 会把程式码缩短,毕竟,查询演算法是内建在LINQ中了。
    static void DemoLinq()
    {
                 
    string[] list = new string[] "code6421""tom""david""cathy" };
                 IEnumerable
    <string> result = Enumerable.Where<string>(list,
                                  
    delegate(string item)
                                  
    {
                                      
    return item == "tom";
                                  }
    );
                 Console.WriteLine(Enumerable.FirstOrDefault(result));
    }
     

    上 面这段程式码可以运行于Visual Studio 2005、Visual Studio 2008,如你使用Visual Studio 2005,请先安装.NET Framework 3.5,然后于专案中添加对System.Core的参考(此DLL位于Program Files\ Reference Assemblies\Microsoft\Framework\3.5),完成后编译程式,你便达到于C#,Visual Studio 2005中使用LINQ的目的。
     
    Join 2 DataTables
     
     我想有许多写Windows Form程式的人,都曾经对于如何Join两个DataTable困扰过,事实上这很简单,只要建另一个DataTable,一个萝卜一个坑的填即可。
     不过有了LINQ To DataSet,一切都变的简单且直觉,但!缺少了LINQ Expression的C# 2.0,只凭LINQ查询函式来做,可以把这件事变简单吗?
    using System.Data.SqlClient;
    ........
    static IEnumerable<JoinData> JoinTables()
    {
                 
    using (SqlConnection conn = new SqlConnection(
    "Data Source=JEFFRAY;Initial Catalog=Northwind;Integrated Security=True"))
    {
                     SqlDataAdapter adapter1 
    = new SqlDataAdapter("SELECT * FROM Customers", conn);
                     SqlDataAdapter adapter2 
    = new SqlDataAdapter("SELECT * FROM Orders", conn);
                     DataTable dt1 
    = new DataTable("Customers");
                     DataTable dt2 
    = new DataTable("Orders");
                     adapter1.Fill(dt1);
                     adapter2.Fill(dt2);
     
                     
    return Enumerable.Join<DataRow,DataRow,string,JoinData>(
                              DataTableExtensions.AsEnumerable(dt2),
                              DataTableExtensions.AsEnumerable(dt1),
                                 
    delegate(DataRow s1)
                                 
    {
                                    
    return s1.IsNull("CustomerID"?
                                           
    null : (string)s1["CustomerID"];
                                 }
    ,
                                 
    delegate(DataRow s2)
                                 
    {
                                    
    return s2.IsNull("CustomerID"? null :
                                        (
    string)s2["CustomerID"];
                                 }
    ,
                                 
    delegate(DataRow s1,DataRow s2)
                                 
    {
                                     JoinData result 
    = new JoinData();
                                       result.OrderID 
    = s1.IsNull("OrderID"? -1 :
                                              (
    int)s1["OrderID"];
                                     result.CompanyName 
    = s2.IsNull("CompanyName"?
                                       
    string.Empty : (string)s2["CompanyName"];
                                        
    return result;
                                  }
    );
                  }

      }
     

     
    .........
    public class JoinData
    {
             
    private int _orderID;
             
    private string _companyName;
             
    public int OrderID
             
    {
                 
    get
                 
    {
                     
    return _orderID;
                 }

                 
    set
                 
    {
                     _orderID 
    = value;
                 }

             }

     
             
    public string CompanyName
             
    {
                 
    get
                 
    {
                     
    return _companyName;
                 }

                 
    set
                 
    {
                     _companyName 
    = value;
                 }

             }

    }
     

    这个程式需要引用System.Data.DataSetExtnesions.DLL,她与System.Core位于同一目录下,JoinTables的函式传回值顷印结果如下:
    10779,Morgenstern Gesundkost
    10780,LILA-Supermercado
    10781,Wartian Herkku
    10782,Cactus Comidas para llevar
    10783,Hanari Carnes
    10784,Magazzini Alimentari Riuniti
    10785,GROSELLA-Restaurante
    10786,Queen Cozinha
    10787,La maison d'Asie
    10788,QUICK-Stop
    10789,Folies gourmandes
    10790,Gourmet Lanchonetes
    10791,Frankenversand
    10792,Wolski Zajazd
    10793,Around the Horn
    10794,Que Delicia
    10795,Ernst Handel
    10796,HILARION-Abastos
    10797,Drachenblut Delikatessen
    10798,Island Trading
    10799,Koniglich Essen
    10800,Seven Seas Imports 

    ..........................................
     
    欢迎光临C# 2.0与LINQ的世界。

    发表于 @ 2008年04月25日 11:30:07|评论(loading...)|编辑

    新一篇: 中国大陆三所大学获授权查看微软软件平台源代码 | 旧一篇: 知识产权保护在中国是一纸空谈

    评论

    #ba527 发表于2008-07-25 15:50:49  IP: 222.78.197.*
    我在2005上开发的程序,升级到2008就不能使用LINQ TO XML了。不知道为什么。

    已经引用了System.Xml.Linq。
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © phphot