- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 SubSonic 3.04 的 SimpleRepository 中,我似乎无法在 lambda 表达式中执行 Contains
操作。这是一个简单的例子:
SimpleRepository repo = new SimpleRepository("ConnectionString");
List<int> userIds = new List<int>();
userIds.Add(1);
userIds.Add(3);
List<User> users = repo.Find<User>(x => userIds.Contains(x.Id)).ToList();
我收到错误信息:
variable 'x' of type 'User' referenced from scope '', but it is not defined
我是不是遗漏了什么,或者 SubSonic 不支持 lambda 表达式中的 Contains
?如果没有,这将如何完成?
最佳答案
因为这些似乎都不起作用......
x => guids.Contains(x.Guid)
x => guids.Any(y => y == x.Guid)
...我们编写了一个自定义的 lambda 表达式生成器来生成:
x => x.Id == {id1} OR x.Id == {id2} OR x.Id == {id3}
这是一个微不足道的场景,但展示了如何 GetContainsId<User>(ids, repo)
将找到 ID 与提供的列表中的内容匹配的所有用户。
public List<T> GetContainsId<T>(List<int> ids, SimpleRepository repo)
where T : Record, new() // `Record` is a base class with property Id
{
ParameterExpression x = Expression.Parameter(typeof(T), "x");
LambdaExpression expr;
if (ids.Count == 0)
{
expr = Expression.Lambda(LambdaExpression.Constant(false), x);
}
else
{
expr = Expression.Lambda(BuildEqual(x, ids.ToArray()), x);
}
return repo.Find<T>((Expression<Func<T,bool>>)expr).ToList();
}
private BinaryExpression BuildEqual(ParameterExpression x, int id)
{
MemberExpression left = Expression.Property(x, "Id");
ConstantExpression right = Expression.Constant(id);
return Expression.Equal(left, right);
}
private BinaryExpression BuildEqual(ParameterExpression x, int[] ids, int pos = 0)
{
int id = ids[pos];
pos++;
if (pos == ids.Length)
{
return BuildEqual(x, id);
}
return Expression.OrElse(BuildEqual(x, ids, pos), BuildEqual(x, id));
}
关于c# - Lambda 包含在 SimpleRepository.Find 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2875787/
我刚开始使用 SubSonic 3 并使用 SimpleRepository 方法。在桌面应用程序中使用时 SimpleRepository 类的预期生命周期是多少? 您是否希望每次想要访问数据库时都
在研究 SubSonic 的新 SimpleRepository 时,我发现调用 更新()方法总是抛出 NullReferenceException .这在 3.0.0.3 版本中包含的示例 MVC
如果我希望能够在对象之间建立一对多的关系,那么在 Subsonic 的 SimpleReporitory 中它将如何工作? 我是否必须创建一个桥接对象,然后在运行时构建我的父对象,还是内置了此支持?
希望 SubSonic SimpleRepository 有一个解决方案/补丁,我可以在其中指定具有默认值的列/属性,以便它使用默认值集填充数据库。 我仍在阅读 SubSonic 文档,只是遇到了那个
我有一个数据库表(Profile)来描述一个人。该表有一列“性别”(整数)。在 .NET 部分我有: public enum Sex { Male = 1, Female = 2 } public c
我正在玩弄 Subsonic 3 的简单存储库,但在理解如何处理外键时遇到了瓶颈...... 如果我有一个产品对象包含 int ID; string name; string description;
我一直在探索 Sub Sonic 3 的 SimpleRepository 并且对它非常满意,但对交易有疑问。我知道使用像“AddMany”和“DeleteMany”这样的方法将在单个事务中自动执行所
我如何使用 SimpleRepository 在 SubSonic 3 中处理关系?例如:拥有作者和书籍(见下文)我希望在保留书籍时保留指定的作者。 [Serializable] public cla
我正在使用 Subsonic 的 SimpleRepository,我正在尝试编写一些单元测试,这样它们就不会触及数据库,但我无法弄清楚 SimpleRepository 是否可以针对内存列表工作(比
我正在尝试使用 Subsonic3 中的 SimpleRepository 功能 - 首先,我必须对 RobC 表示衷心的感谢 - Subsonic 真的很棒,我迫不及待地想看到 SimpleRepo
我有这个玩具代码,工作正常,使用 MySQL var r = new SimpleRepository("DB", SimpleRepositoryOptions.None); var q =
在 SubSonic 3.04 的 SimpleRepository 中,我似乎无法在 lambda 表达式中执行 Contains 操作。这是一个简单的例子: SimpleRepository re
我想在我的项目中使用 subsonic 3.0 SimpleRepository,但是有一个问题: 如果我的表名像 产品 等然后我无法从数据库中获取任何数据, 因为 subsonic 会生成像“Sel
我正在尝试使用 Rihino 模拟来模拟亚音速 SimpleRepository 的 Add 方法,我正在使用 IRepository 接口(interface),但我是模拟的新手,不知道如何从那里开
有人知道为什么 linq 查询在使用事件记录查询时比使用 simplerepository 查询慢大约 6 倍吗?下面的代码运行速度比我使用简单存储库查询数据时慢 6 倍。这段代码循环执行1000次
我如何使用 Subsonic 的 Find方法来搜索字段包含“null”值的行。为了便于讨论,我们假设我有一个名为“Visit”的 C# 类,其中包含一个名为“SynchronizedOn”的可为空的
我是一名优秀的程序员,十分优秀!