我有一个列表变量,我想得到该列表的类型并将第二个变量强制转换为该类型。为清楚起见,我添加了以下代码。
目前我有以下内容:
return _ValueList.Any<FieldType>(x => x.Equals((FieldType)fieldValueObject));
我想做这样的事情:
Type valueType = _ValueList.GetType();
return _ValueList.Any<FieldType>(x => x.Equals((valueType)fieldValueObject));
任何帮助将不胜感激。
更新
当fieldValueObject的类型为Int16并且我尝试将其强制转换为Int32时,抛出了无效的强制转换异常。
更新2:
我使用了以下解决方案:
if (fieldValueObject.GetType() == typeof(Int16))
{
fieldValueObject = Convert.ToInt32(fieldValueObject);
}
return _ValueList.Any<FieldType>(x => x.Equals(fieldValueObject));
它不漂亮但它有效。
答案 0 :(得分:0)
public bool ContainsAny<T>(List<T> valueList, T fieldValueObject)
{
return valueList.Any(x => x.Equals(fieldValueObject));
}
或
public bool ContainsAny<T>(List<T> valueList, object fieldValueObject)
{
return valueList.Any(x => x.Equals((T)fieldValueObject));
}
请注意,第二个可以抛出InvalidCastException。