gpt4 book ai didi

c# - 传递参数表达式导致奇怪的错误

转载 作者:行者123 更新时间:2023-11-30 12:11:19 25 4
gpt4 key购买 nike

我有一个模型调用地址,使用该模型我创建了一些 crud 操作,在执行此操作的过程中我想要一种方法可以基于任意数量的属性创建查询:

public static IEnumerable<address> GetByParams(Expression<Func<address, bool>> predicate, int? pageNumber, int? pageSize)
{
using (IDbConnection db = DbFactory.OpenDbConnection())
{
if ((pageNumber != null) && (pageSize != null))
{
var data = db.Where<address>(predicate).Skip((int) pageNumber).Take((int) pageSize).ToList();
if (data.Any())
{
data[0].TotalCount = data.Count();
data[0].TotalPages = (int) (data.Count()/pageSize);
}
return data;
}
//this is the code that creates the error
return db.Where<address>(predicate);
}
}

然后我尝试使用以下代码测试此代码:

ViewBag.PossibleBilling = new SelectList(address.GetByParams(x=> x.AddressType == 2,null,null),0);

然而,这会导致最奇怪的错误:(错误不是来自 selectList )

The given key was not present in the dictionary.

我试过用谷歌搜索这个,但结果比实际错误更复杂。我想这与我没有将 predicate 设置为正确的类型有关,或者在我将 predicate 传递到 where 之前必须发生某些事情。

谓词的原因是我有一个为我生成所有这些的 TT 文件,所以我不知道属性名称并且需要保持匿名。

编辑:

为了以后阅读的清晰度:我将其用于 servicestack.ormlite:https://github.com/ServiceStack/ServiceStack.OrmLite

我正在尝试创建一个 TT 文件以使用我的模型构建一些基本的 crud 方法,我在 ormlite 中找到了这段代码:

System.Collections.Generic.List<T> Where<T>(this System.Data.IDbConnection dbConn, object anonType) Member of ServiceStack.OrmLite.OrmLiteReadConnectionExtensions

对象 anonType 应该是我自己的查询/谓词

分页代码错误,但这不是错误的过程,drax解决的问题是我使用的是Where,而我只需要一个带参数的选择。

此改进将代码的使用更改为以下过程:

public static List<T> Select<T>(this IDbConnection dbConn, Expression<Func<T, bool>> predicate)

这个过程接受表达式并消除错误

谢谢

最佳答案

我认为您应该使用 Select 而不是 Where 扩展方法。所以你的例子可以这样写:

public static IEnumerable<address> GetByParams(Expression<Func<address, bool>> predicate, int? pageNumber, int? pageSize)
{
using (IDbConnection db = DbFactory.OpenDbConnection())
{
if ((pageNumber != null) && (pageSize != null))
{
var data = db.Select<address>(predicate).Skip((int) pageNumber).Take((int) pageSize).ToList();
if (data.Any())
{
data[0].TotalCount = data.Count();
data[0].TotalPages = (int) (data.Count()/pageSize);
}
return data;
}
//this is the code that creates the error
return db.Select<address>(predicate);
}
}

关于c# - 传递参数表达式导致奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15705419/

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