当前位置:编程学习 > C#/ASP.NET >>

让C#委托来帮你简化代码,学习使用Func、Action委托

 

为了方面大家更好地理解我写这篇文章的目的,这篇文章我会详细介绍我的代码,我有什么理解错误的,请大家不吝赐教。

 

首先我定义2 个类。

 

公司类:

UserCompany.cs

 

class UserCompany 

 

 

    public int ID { get; set; } 

 

 

 

    public string CompanyName { get; set; } 

 

 

 

    public string CompanyDesc { get; set; } 

 

}

 

  

 

员工类:

UserInfo.cs

 

class UserInfo 

 

 

    public int ID { get; set; } 

 

 

 

    public string UserName { get; set; } 

 

 

 

    public int UserCompanyID { get; set; } 

 

 

 

    public UserCompany UserCompany_UserCompanyID { get; set; } 

 

}

 

  

 

也许大家看到了,这里的员工类(UserInfo)有一个属性UserCompanyID 来标记这个员工属于哪个公司。

同时也有一个属性UserCompany_UserCompanyID 表示这个UserCompanyID 对应的公司类(UserCompany)。

下面是一个方法来得到所有的公司,一般我们的数据是保存在数据库中的。为了演示,这里就不访问数据库了。

 

/// <summary> 

 

/// 得到所有的公司信息 

 

/// </summary> 

 

/// <returns></returns> 

 

static IList<UserCompany> GetAllUserCompanys() 

 

 

    return new List<UserCompany>()  

 

    {  

 

        new UserCompany(){ ID = 1, CompanyName = "新浪", CompanyDesc = "新浪是个大公司" }, 

 

        new UserCompany(){ ID = 2, CompanyName = "百度", CompanyDesc = "百度是个大公司" }, 

 

        new UserCompany(){ ID = 3, CompanyName = "腾讯", CompanyDesc = "腾讯是个大公司" }, 

 

        new UserCompany(){ ID = 4, CompanyName = "网易", CompanyDesc = "网易是个大公司" }, 

 

        new UserCompany(){ ID = 5, CompanyName = "搜狐", CompanyDesc = "搜狐是个大公司" }, 

 

        new UserCompany(){ ID = 6, CompanyName = "阿里巴巴", CompanyDesc = "阿里巴巴是个大公司" } 

 

    }; 

 

}

 

  

 

同时也有一个方法来得到所有的员工。

 

/// <summary> 

 

/// 得到所有的员工信息 

 

/// </summary> 

 

/// <returns></returns> 

 

static IList<UserInfo> GetAllUserInfos() 

 

 

    return new List<UserInfo>()  

 

    {  

 

        new UserInfo(){ ID = 1, UserName = "张三", UserCompanyID = 2 }, 

 

        new UserInfo(){ ID = 2, UserName = "李四", UserCompanyID = 1 }, 

 

        new UserInfo(){ ID = 3, UserName = "王五", UserCompanyID = 4 }, 

 

        new UserInfo(){ ID = 4, UserName = "赵六", UserCompanyID = 1 }, 

 

        new UserInfo(){ ID = 5, UserName = "杨七", UserCompanyID = 3 }, 

 

        new UserInfo(){ ID = 6, UserName = "朱八", UserCompanyID = 1 }, 

 

        new UserInfo(){ ID = 7, UserName = "孙九", UserCompanyID = 2 }, 

 

        new UserInfo(){ ID = 8, UserName = "萧十一郎", UserCompanyID = 1 } 

 

    }; 

 

}

 

  

 

一般如果我们得到了所有的员工的基本信息后,还想得到这些员工对应的公司信息,比如:公司名、公司描述等等。

怎么办呢?我的思路是,当我们得到这些员工的基本信息后,就能够得到每个员工对应的公司ID(UserCompanyID),

然后我在利用Linq 取出这些公司ID(UserCompanyID),保存到一个可以枚举的集合中IEnumerable<int>,然后去

数据库中取出这些公司ID(UserCompanyID)对应的公司信息。下面是代码:

 

using System; 

 

using System.Collections.Generic; 

 

using System.Linq; 

 

using System.Text; 

 

  

 

namespace ConAppTest 

 

 

    class Program 

 

    { 

 

        static void Main(string[] args) 

 

        { 

 

            IList<UserInfo> users = GetAllUserInfos(); 

 

            IEnumerable<int> userCompanyIds = users.Select<UserInfo, int>(u => u.UserCompanyID).Distinct(); 

 

            IEnumerable<UserCompany> existsCompanys = GetCompanysByCompanyIds(userCompanyIds); 

 

            foreach (UserCompany companyItem in existsCompanys) 

 

            { 

 

                if(companyItem == null) 

 

                { 

 

                    continue; 

 

                } 

 

                Console.WriteLine(companyItem.CompanyName); 

 

            } 

 

        } 

 

  

 

&

补充:软件开发 , C# ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,