gpt4 book ai didi

c# - 无法在 SqlParameterCollection 上使用 FirstOrDefault

转载 作者:行者123 更新时间:2023-11-30 13:47:26 35 4
gpt4 key购买 nike

有一种方法可以检查 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' does not contain a definition for 'FirstOrDefault' and no extension method 'FirstOrDefault' accepting a first argument of type 'System.Data.SqlClient.SqlParameterCollection' could be found (are you missing a using directive or an assembly reference?)

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

最佳答案

您不能使用 FirstOrDefault 的原因是那个SqlParameterCollection不执行 IEnumerable<SqlParameter> (在其上定义了 LINQ 表达式)。

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

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

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

cp.Cast<SqlParameter>()
.FirstOrDefault(p => p.ParameterName == "@ReturnValue")

关于c# - 无法在 SqlParameterCollection 上使用 FirstOrDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17311018/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com