编辑:这个问题不是Check if any item in a list match any item in another list的重复。我正在寻找一种方法,在这种方法中,我可以为 n 个键值参数和相关的 where 子句传递 Hashtable、数组或一些基于集合的方法。
我有 3 种重载方法:
public static bool DoesRecordExist(string keyColumn, string keyValue, DataTable dt) {
if (dt != null && dt.Rows.Count > 0) {
bool exists = dt.AsEnumerable().Where(r => string.Equals(SafeTrim(r[keyColumn]), keyValue, StringComparison.CurrentCultureIgnoreCase)).Any();
return exists;
} else {
return false;
}
}
public static bool DoesRecordExist(string keyColumn1, string keyColumn2, string keyValue1, string keyValue2, DataTable dt) {
if (dt != null && dt.Rows.Count > 0) {
bool exists = dt.AsEnumerable().Where(r => string.Equals(SafeTrim(r[keyColumn1]), keyValue1, StringComparison.CurrentCultureIgnoreCase) && string.Equals(SafeTrim(r[keyColumn2]), keyValue2, StringComparison.CurrentCultureIgnoreCase)).Any();
return exists;
} else {
return false;
}
}
public static bool DoesRecordExist(string keyColumn1, string keyColumn2, string keyColumn3, string keyValue1, string keyValue2, string keyValue3, DataTable dt) {
if (dt != null && dt.Rows.Count > 0) {
bool exists = dt.AsEnumerable().Where(r => string.Equals(SafeTrim(r[keyColumn1]), keyValue1, StringComparison.CurrentCultureIgnoreCase) && string.Equals(SafeTrim(r[keyColumn2]), keyValue2, StringComparison.CurrentCultureIgnoreCase) && string.Equals(SafeTrim(r[keyColumn3]), keyValue3, StringComparison.CurrentCultureIgnoreCase)).Any();
return exists;
} else {
return false;
}
}
这些都按预期工作,如您所见,所有 3 个都是相同的,只是参数和相应的where子句参数数量增加。现在我需要添加另一个带有 5 个键/值对的重载。显然,这越来越愚蠢。
如何将所有这些重载转换为一个函数,在该函数中我只需传入一个Hashtable键值对(或其他一些具有相同或更有意义的集合)?
提前致谢。