Linq To Object實例之過濾字符集

目前利用Linq To Object可以查詢實現了IEnumerable<T>接口的未定義類型對象數組、自定義對象數組、泛型List和Dictionary、以及string等。當然進行編程之前要添加System.Core.dll引用和命名空間System.Linq,事實上VS2008已經在建立項目的時候自動添加了。

這次要做的是一個簡單的winform程序主要用Linq to object來過濾字符集,然後綁定到相應的datagrid去。

先來看看完成後的效果圖(通過鼠標點擊改變測試字符集):
FontFilter.jpg

本實例省略調試代碼!主要Linq實現步驟簡述如下:
定義系統字符集
private List<FontFamily> systemFont = new List<FontFamily>();

 1    /// <summary>
 2        /// 獲取已安裝的字符集
 3        /// </summary>
 4        /// <returns>字符集list</returns>

 5        private List<FontFamily> GetAllFont()
 6      {
 7
 8            foreach (FontFamily f in FontFamily.Families)
 9           {
10                systemFont.Add(new FontFamily(f.Name));
11
12            }

13            return systemFont;
14        }

1 通過查詢把結果集綁定到datagrid中去
      var query
2                  = from font in systemFont
3                     where font.Name.ToLower().StartsWith(txtFontFilter.Text.ToLower())&&font.IsStyleAvailable(FontStyle.Regular)
4                     select font;
5                   //Gray Zhang給了很好的建議font.IsStyleAvailable(FontStyle.Regular),在此感謝!
6            dgvFont.DataSource = query.ToList();//這裏的ToList是必須的,爲了在winform中生成List進行顯示. ASP.net有所不同.

可能遇到的問題: 字體"......"不支持樣式"Regular",也許是由於系統字體庫出了問題,更新一下.如果有更好的解決該Exception方法,請各位貼出來,謝謝!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章