从 T 列表中删除空格和下划线
Remove spaces and underscores from a T List
问题:
对象的 T 列表 (aTSource) 包含带有额外空格和下划线的字段名称列表,以防止与没有的变量匹配。
我的模型 class 中有一个 T 对象列表。此列表包括字段名称、值和字段类型。我想进入字段名称并从名称中删除所有空格和下划线。
该代码的目的是比较 Excel 文档和 WPF 表单中的字段以及 return 这些字段名称的列表。
foreach (DataRow dataRow in dataTable.AsEnumerable().ToList())
{
T aTSource = new T();
foreach (PropInfo aField in commonFields)
{
PropertyInfo propertyInfos = aTSource.GetType().GetProperty(aField.Name);
var value = (dataRow[afield.Name] == DBNull.Value) ? null : dataRow[afield.Name];
...
propertyInfos.SetValue(aTSource, value, null);
list.Add(aTSource);
}
}
来自 aTSource 的示例值:
IP_Address null string
Product Name null string
如果您的目标只是比较两个字符串,而不考虑空格和下划线,您可以创建一个扩展方法来去除它们然后进行比较:
public static string SuperStrip(this string InputString)
{
if (string.IsNullOrWhiteSpace(InputString))
return string.Empty;
return InputString.Replace(" ", string.Empty).Replace("_", string.Empty);
}
这些表达式中的每一个都会导致 true
条件:
bool foo;
foo = "nicekitty".SuperStrip() == "nice kitty".SuperStrip();
foo = "nicekitty".SuperStrip() == "nice_kitty".SuperStrip();
foo = "nice_kitty".SuperStrip() == "nice kitty".SuperStrip();
当然,您也可以将其包装在一个函数中进行比较:
public static bool HeaderCompare(string String1, string String2)
{
if (string.IsNullOrWhiteSpace(String1))
String1 = string.Empty;
if (string.IsNullOrWhiteSpace(String2))
String2 = string.Empty;
return String1.Replace(" ", string.Empty).Replace("_", string.Empty) ==
String2.Replace(" ", string.Empty).Replace("_", string.Empty);
}
这似乎过于简单化了,所以我可能误解了你的任务,所以如果我不在,请随时告诉我。
创建两个带有替换语句的 Foreach 循环,第一个用于 Excel 字段名称列表,第二个用于字段名称的 WPF 形式,以确保字段名称匹配。
foreach (DataColumn column in dataTable.Columns)
{
column.ColumnName = column.ColumnName.Replace(" ", "");
column.ColumnName = column.ColumnName.Replace("_", "");
}
问题: 对象的 T 列表 (aTSource) 包含带有额外空格和下划线的字段名称列表,以防止与没有的变量匹配。
我的模型 class 中有一个 T 对象列表。此列表包括字段名称、值和字段类型。我想进入字段名称并从名称中删除所有空格和下划线。
该代码的目的是比较 Excel 文档和 WPF 表单中的字段以及 return 这些字段名称的列表。
foreach (DataRow dataRow in dataTable.AsEnumerable().ToList())
{
T aTSource = new T();
foreach (PropInfo aField in commonFields)
{
PropertyInfo propertyInfos = aTSource.GetType().GetProperty(aField.Name);
var value = (dataRow[afield.Name] == DBNull.Value) ? null : dataRow[afield.Name];
...
propertyInfos.SetValue(aTSource, value, null);
list.Add(aTSource);
}
}
来自 aTSource 的示例值:
IP_Address null string
Product Name null string
如果您的目标只是比较两个字符串,而不考虑空格和下划线,您可以创建一个扩展方法来去除它们然后进行比较:
public static string SuperStrip(this string InputString)
{
if (string.IsNullOrWhiteSpace(InputString))
return string.Empty;
return InputString.Replace(" ", string.Empty).Replace("_", string.Empty);
}
这些表达式中的每一个都会导致 true
条件:
bool foo;
foo = "nicekitty".SuperStrip() == "nice kitty".SuperStrip();
foo = "nicekitty".SuperStrip() == "nice_kitty".SuperStrip();
foo = "nice_kitty".SuperStrip() == "nice kitty".SuperStrip();
当然,您也可以将其包装在一个函数中进行比较:
public static bool HeaderCompare(string String1, string String2)
{
if (string.IsNullOrWhiteSpace(String1))
String1 = string.Empty;
if (string.IsNullOrWhiteSpace(String2))
String2 = string.Empty;
return String1.Replace(" ", string.Empty).Replace("_", string.Empty) ==
String2.Replace(" ", string.Empty).Replace("_", string.Empty);
}
这似乎过于简单化了,所以我可能误解了你的任务,所以如果我不在,请随时告诉我。
创建两个带有替换语句的 Foreach 循环,第一个用于 Excel 字段名称列表,第二个用于字段名称的 WPF 形式,以确保字段名称匹配。
foreach (DataColumn column in dataTable.Columns)
{
column.ColumnName = column.ColumnName.Replace(" ", "");
column.ColumnName = column.ColumnName.Replace("_", "");
}