目前利用Linq To Object可以查詢實現了IEnumerable<T>接口的未定義類型對象數組、自定義對象數組、泛型List和Dictionary、以及string等。當然進行編程之前要添加System.Core.dll引用和命名空間System.Linq,事實上VS2008已經在建立項目的時候自動添加了。
這次要做的是一個簡單的winform程序主要用Linq to object來過濾字符集,然後綁定到相應的datagrid去。
先來看看完成後的效果圖(通過鼠標點擊改變測試字符集):
本實例省略調試代碼!主要Linq實現步驟簡述如下:
這次要做的是一個簡單的winform程序主要用Linq to object來過濾字符集,然後綁定到相應的datagrid去。
先來看看完成後的效果圖(通過鼠標點擊改變測試字符集):
本實例省略調試代碼!主要Linq實現步驟簡述如下:
定義系統字符集
private List<FontFamily> systemFont = new List<FontFamily>();
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 }
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有所不同.
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方法,請各位貼出來,謝謝!