LINQ基础之LINQ to Object

本文介绍了如何使用LINQ to Objects在ASP.NET应用程序中简化集合查询。通过实例展示了如何创建数组,以及使用传统方法和LINQ语法进行查询。在后台代码中,通过两个按钮事件`btn1_Click`和`btn2_Click`对比了传统foreach循环与LINQ查询的区别。文章强调了LINQ的延迟执行特性和需要引入`System.Collections.Generic`命名空间的重要性。
摘要由CSDN通过智能技术生成

使用LINQ技术能显著简化查询集合的过程,不过要求集合对象必须实现IEnumerable<T>泛型接口或者是IEnumerable接口。这方面请参考:http://www.cnblogs.com/cm490893449/archive/2010/06/23/1763435.html

1、新建一个网站项目,添加一个页面:LINQtoObject.aspx;

2、在页面中添加两个lable控件和两个button控件。

前台代码:

<form id="form1" runat="server">
    <div>
    <div>
        <asp:Label ID="Lbltext1" runat="server" Text="Label"></asp:Label>
        <br />
        <asp:Button ID="btn1" runat="server" Text="使用传统方法" οnclick="btn1_Click" /><br />
        </div>
        <div>
        <asp:Label ID="Lbltext2" runat="server" Text="Label"></asp:Label>
            <br />
        <asp:Button ID="btn2" runat="server" Text="使用LINQ方法" οnclick="btn2_Click" /><br />
    </div>
    </div>
    </form>

3、转到后台代码编写:

(1)首先,构造一个数组;

(2)分别编写两个button控件的方法;

代码如下:

 private string[] staff = { "Jason", "Katty", "Tom", "Dick", "Harry" };

 protected void btn1_Click(object sender, EventArgs e)
    {
        Lbltext1.Text = "";
        foreach (var somebody in staff)
        {
            if (somebody.Length > 4)
            {
                Lbltext1.Text += somebody + "<br/>";
            }
        }
    }
    protected void btn2_Click(object sender, EventArgs e)
    {
        Lbltext2.Text = "";
        //使用LINQ语法
        //IEnumerable<string> result = from str in staff
        //                             where str.Length > 4
        //                             select str;
        //使用where拓展方法
        IEnumerable<string> result = staff.Where(t => t.Length > 4);
        foreach (string str in result)
        {
            Lbltext2.Text += str + "<br/>";
        }
    }

运行结果如下:

注意,上面的LINQ实现我编写了两个方法,一个是LINQ语法,一个是拓展方法,两个方法的实现效果是一样的。

另外,在后台文件中要包含命名空间:System.Collections.Generic,否则会出现“非泛型 类型“System.Collections.IEnumerable”不能与类型参数一起使用”的错误。

总结:

LINQ查询完成了以下工作:

(1)创建LINQ表达式;

(2)获取一个实现了IEnumerable<T>的迭代对象;

(3)当遍历迭代对象时,LINQ开始实际的数据检索。(此处知识有关LINQ的延迟执行特性)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值