无法对SqlParameterCollection使用FirstOrDefault
本文关键字:使用 FirstOrDefault SqlParameterCollection | 更新日期: 2023-09-27 18:19:59
有一个方法可以检查SqlParameterCollection中的ReturnValue参数,如果存在,则检查该值是否违反了约束。
public static void VerifyUniqueness(this ISqlServerProvider provider,
OperationType operationType, SqlParameterCollection cp)
在这种方法中,我认为首先检查就足够了
if (cp["@ReturnValue"]==null){return;}
但如果"@ReturnValue"==null,就会抛出异常,所以我想我应该使用Linq:
cp.FirstOrDefault(p => p.ParameterName == "@ReturnValue");
但这甚至无法编译。
"System.Data.SqlClient.SqlParameterCollection"不包含"FirstOrDefault"的定义,没有扩展方法"FirstOrDefault"接受类型为的第一个参数找不到"System.Data.SqlClient.SqlParameterCollection"(您是缺少using指令或程序集引用?)
System.Linq被引用,所以不确定发生了什么。
FirstOrDefault
的原因是SqlParameterCollection
没有实现IEnumerable<SqlParameter>
(定义了LINQ表达式)。
检查参数的预期方法是使用Contains
if (cp.Contains("@ReturnValue"))
如果您真的想使用LINQ运算符,可以使用Cast
:
cp.Cast<SqlParameter>()
.FirstOrDefault(p => p.ParameterName == "@ReturnValue")