星辰.Net技术社区论坛

首页 » .NET » LINQ » Linq To Object实例之过滤字符集
admin - 2008-6-9 21:18:00
目前利用Linq To Object可以查询实现了IEnumerable<T>接口的未定义类型对象数组、自定义对象数组、泛型List和Dictionary、以及string等。当然进行编程之前要添加System.Core.dll引用和命名空间System.Linq,事实上VS2008已经在建立项目的时候自动添加了。£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
这次要做的是一个简单的winform程序主要用Linq to object来过滤字符集,然后绑定到相应的datagrid去。£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
先来看看完成后的效果图(通过鼠标点击改变测试字符集):£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
本实例省略调试代码!主要Linq实现步骤简述如下:£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
定义系统字符集£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
private List<FontFamily> systemFont = new List<FontFamily>();
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
1        /// <summary>£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
2        /// 获取已安装的字符集£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
3        /// </summary>£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
4        /// <returns>字符集list</returns>£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
5      private List<FontFamily> GetAllFont()£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
6      {£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
7£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
8            foreach (FontFamily f in FontFamily.Families)£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
9          {£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
10                systemFont.Add(new FontFamily(f.Name));£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
11£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
12            }£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
13            return systemFont;£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
14        }
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
1 通过查询把结果集绑定到datagrid中去£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
    var query£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
2                  = from font in systemFont£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
3                    where font.Name.ToLower().StartsWith(txtFontFilter.Text.ToLower())&&font.IsStyleAvailable(FontStyle.Regular) £1écž¬Hžšwww.netcsharp.cn§D6­¢)*
4                    select font;£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
5                  //Gray Zhang给了很好的建议font.IsStyleAvailable(FontStyle.Regular),在此感谢!£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
6            dgvFont.DataSource = query.ToList();//这里的ToList是必须的,为了在winform中生成List进行显示. ASP.net有所不同.
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
其中,查看是否支持Regular可以这么写 (注:源码中没有这段...)£1écž¬Hžšwww.netcsharp.cn§D6­¢)*
from font in systemFont £1écž¬Hžšwww.netcsharp.cn§D6­¢)*
where font.Name.ToLower().StartsWith(txtFontFilter.Text.ToLower()) £1écž¬Hžšwww.netcsharp.cn§D6­¢)*
&& font.IsStyleAvailable(FontStyle.Regular) £1écž¬Hžšwww.netcsharp.cn§D6­¢)*
select font;£1écž¬Hžšwww.netcsharp.cn§D6­¢)*

附件: linqtoobject.rar
1
查看完整版本: Linq To Object实例之过滤字符集