- 首页 > it技术 > >
C#DataTableRow列值互转
1///
2/// 把DataRow中的某一列值转换为CheckState类型
3///
4/// 数据行
5/// 列名
6///
7public static CheckState DataRowToCheckState(this DataRow row, string columnName)
8{
9if (!row.Table.Columns.Contains(columnName))
10{
11return CheckState.Indeterminate;
12}
13
14if (row.IsNull(columnName))
15{
16return CheckState.Indeterminate;
17}
18
19bool result;
20if (bool.TryParse(row[columnName].ToString(), out result))
21{
22return result ? CheckState.Checked : CheckState.Unchecked;
23}
24else
25{
26return CheckState.Indeterminate;
27}
28}
29
30///
31/// 把DataRow中的某一列值转换为十进制数
32///
33/// 数据行
34/// 列名
35///
36public static decimal DataRowToDecimal(this DataRow row, string columnName)
37{
38if (!row.Table.Columns.Contains(columnName))
39{
40return 0M;
41}
42
43if (row.IsNull(columnName))
44{
45return 0M;
46}
47
48decimal result;
49if (decimal.TryParse(row[columnName].ToString(), out result))
50{
51return result;
52}
53else
54{
55return 0M;
56}
57}
58
59///
60/// 把DataRow中的某一列值转换为十进制数
61///
62/// 数据行
63/// 列名
64/// 可能为空
65public static decimal? DataRowToDecimalNull(this DataRow row, string columnName)
66{
67if (!row.Table.Columns.Contains(columnName))
68{
69return null;
70}
71
72if (row.IsNull(columnName))
73{
74return null;
75}
76
77decimal result;
78if (decimal.TryParse(row[columnName].ToString(), out result))
79{
80return result;
81}
82else
83{
84return null;
85}
86}
87
88///
89/// 把DataRow中的某一列值转换为字符串
90///
91/// 数据行
92/// 列名
93///
94public static string DataRowToString(this DataRow row, string columnName)
95{
96if (!row.Table.Columns.Contains(columnName))
97{
98return string.Empty;
99}
100
101if (row.IsNull(columnName))
102{
103return string.Empty;
104}
105
106return row[columnName].ToString();
107}
108
109///
110/// 把DataRow中的某一列值转换为日期
111///
112/// 【C#DataTableRow列值互转】数据行
113/// 列名
114///
115public static DateTime DataRowToDateTime(this DataRow row, string columnName)
116{
117if (!row.Table.Columns.Contains(columnName))
118{
119return DateTime.Now;
120}
121
122if (row.IsNull(columnName))
123{
124return DateTime.Now;
125}
126
127DateTime result;
128if (DateTime.TryParse(row[columnName].ToString(), out result))
129{
130return result;
131}
132else
133{
134return DateTime.Now;
135}
136}
137
138///
139/// 把DataRow中的某一列值转换为日期
140///
141/// 数据行
142/// 列名
143///
144public static DateTime? DataRowToDateTimeNull(this DataRow row, string columnName)
145{
146if (!row.Table.Columns.Contains(columnName))
147{
148return null;
149}
150
151if (row.IsNull(columnName))
152{
153return null;
154}
155
156DateTime result;
157if (DateTime.TryParse(row[columnName].ToString(), out result))
158{
159return result;
160}
161else
162{
163return null;
164}
165}
166
167///
168/// 把DataRow转换为数据字典
169///
170///
171///
172public static Dictionary DataRowToDictionary(this DataRow row)
173{
174if (row.Table.Columns.Count > 0)
175{
176Dictionary dic = new Dictionary();
177for (int i = 0;
i < row.Table.Columns.Count;
i++)
178{
179var columnName = row.Table.Columns[i].ColumnName;
180dic.Add(columnName, row[columnName]);
181}
182
183return dic;
184}
185
186return null;
187}
188
189///
190/// 把DataRow中的某一列值转换为布尔类型
191///
192/// 数据行
193/// 列名
194///
195public static bool DataRowToBool(this DataRow row, string columnName)
196{
197if (!row.Table.Columns.Contains(columnName))
198{
199return false;
200}
201
202if (row.IsNull(columnName))
203{
204return false;
205}
206
207bool result;
208if (bool.TryParse(row[columnName].ToString(), out result))
209{
210return result;
211}
212else
213{
214return false;
215}
216}
217}
218#endregion
219
220#region Dictionary的扩展方法
221///
222/// Dictionary的扩展方法
223///
224public static class DictionaryExtensionMethods
225{
226///
227/// 把Dictionary中的某一值转换为布尔类型
228///
229/// 数据字典
230/// 列名
231///
232public static CheckState DictionaryToCheckState(this Dictionary dic, string key)
233{
234if (!dic.ContainsKey(key))
235{
236return CheckState.Indeterminate;
237}
238
239if (dic[key] == null)
240{
241return CheckState.Indeterminate;
242}
243
244bool result;
245if (bool.TryParse(dic[key].ToString(), out result))
246{
247return result ? CheckState.Checked : CheckState.Unchecked;
248}
249else
250{
251return CheckState.Indeterminate;
252}
253}
254
255///
256/// 把Dictionary中的某一值转换为十进制数
257///
258/// 数据字典
259/// 列名
260///
261public static decimal DictionaryToDecimal(this Dictionary dic, string key)
262{
263if (!dic.ContainsKey(key))
264{
265return 0M;
266}
267
268if (dic[key] == null)
269{
270return 0M;
271}
272
273decimal result;
274if (decimal.TryParse(dic[key].ToString(), out result))
275{
276return result;
277}
278else
279{
280return 0M;
281}
282}
283
284///
285/// 把Dictionary中的某一值转换为字符串
286///
287/// 数据字典
288/// 列名
289///
290public static string DictionaryToString(this Dictionary dic, string key)
291{
292if (!dic.ContainsKey(key))
293{
294return string.Empty;
295}
296
297if (dic[key] == null)
298{
299return string.Empty;
300}
301
302return dic[key].ToString();
303}
304
305///
306/// 把Dictionary中的某一值转换为日期
307///
308/// 数据字典
309/// 列名
310///
311public static DateTime DictionaryToDateTime(this Dictionary dic, string key)
312{
313if (!dic.ContainsKey(key))
314{
315return DateTime.Now;
316}
317
318if (dic[key] == null)
319{
320return DateTime.Now;
321}
322
323DateTime result;
324if (DateTime.TryParse(dic[key].ToString(), out result))
325{
326return result;
327}
328else
329{
330return DateTime.Now;
331}
332}
333}
334#endregion
335
336#region 表格GridView的扩展方法
337///
338/// 表格GridView的扩展方法
339///
340public static class GridViewExtensionMethods
341{
342///
343/// 导出DevExpress表格
344///
345/// 文件名
346public static void ExportToExcel(this DevExpress.XtraGrid.Views.Grid.GridView view, string fileName)
347{
348SaveFileDialog saveDlg = new SaveFileDialog();
349saveDlg.Filter = "Excel 2007文件|*.xlsx|Excel 99-03|*.xls";
350saveDlg.FileName = fileName;
351if (saveDlg.ShowDialog() == DialogResult.OK)
352{
353if (saveDlg.FilterIndex == 1)
354{
355view.ExportToXlsx(saveDlg.FileName);
356}
357else if (saveDlg.FilterIndex == 2)
358{
359view.ExportToXls(saveDlg.FileName);
360}
361}
362}
363}
364#endregion
推荐阅读