3

有一种方法可以检查 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”的定义,并且找不到接受“System.Data.SqlClient.SqlParameterCollection”类型的第一个参数的扩展方法“FirstOrDefault”(您是否缺少 using 指令还是汇编参考?)

System.Linq 被引用,所以不确定发生了什么。

4

1 回答 1

9

您不能使用的原因FirstOrDefault是它SqlParameterCollection没有实现IEnumerable<SqlParameter>(在其上定义了 LINQ 表达式)。

检查参数的预期方法是使用Contains

if (cp.Contains("@ReturnValue"))

如果您真的想使用 LINQ 运算符,可以使用Cast

cp.Cast<SqlParameter>()
  .FirstOrDefault(p => p.ParameterName == "@ReturnValue")
于 2013-06-26T03:28:43.180 回答