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


    推荐阅读