Linq 无法理解表达式-RavenDB
我有一组交易,每个交易都有一个允许访问交易的用户ID列表 对Raven的简单质疑Linq 无法理解表达式-RavenDB,linq,ravendb,Linq,Ravendb,我有一组交易,每个交易都有一个允许访问交易的用户ID列表 对Raven的简单质疑 var theId = 6; var deals = session.Query<Deal>().Where(x => x.UserIds.Contains(theId)).ToList(); var theId=6; var deals=session.Query().Where(x=>x.UserIds.Contains(theId)).ToList(); Deal类看起来像什么 publ
var theId = 6;
var deals = session.Query<Deal>().Where(x => x.UserIds.Contains(theId)).ToList();
var theId=6;
var deals=session.Query().Where(x=>x.UserIds.Contains(theId)).ToList();
Deal类看起来像什么
public class Deal {
public Int32 Id { get; set; }
public List<Int32> UserIds = new List<Int32>();
}
公共类交易{
公共Int32 Id{get;set;}
public List userid=new List();
}
导致异常
Could not understand expression: .Where(x => x.UserIds.Contains(value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId))
{"Expression type not supported: value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId"}
无法理解表达式:。其中(x=>x.UserIds.Contains(值(Deals\u Manager.Controllers.DealsController+c\u DisplayClass4.theId))
内部异常
Could not understand expression: .Where(x => x.UserIds.Contains(value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId))
{"Expression type not supported: value(Deals_Manager.Controllers.DealsController+<>c__DisplayClass4).theId"}
{“不支持的表达式类型:值(Deals\u Manager.Controllers.DealsController+c\u DisplayClass4).theId”}
问题是什么?A
包含内部,其中是一个极难转换为UserIds:6的正确Lucene表达式的表达式树,更不用说引入闭包将外部变量引入lambda表达式了。(顺便说一句,正是这个结尾让你的例外看起来如此愚蠢。)
更复杂的是,您的模型是一个列表,它有自己的特殊版本Contains
,与IEnumerable
版本不同
请改为试穿以下尺码:
var theId = 6;
var deals = session.Query<Deal>()
.Where(x => x.UserIds.Any(id => id == theId))
.ToList();
var theId=6;
var deals=session.Query()
.Where(x=>x.UserIds.Any(id=>id==theId))
.ToList();
对于Raven无法理解的任何表达式树,只要试着用更原始的术语来考虑它。A包含内部的,其中是一个极难转换为用户ID:6的正确Lucene表达式的表达式树,更不用说引入闭包将外部变量引入lambda表达式。(顺便说一句,正是这个结尾让你的例外看起来如此愚蠢。)
更复杂的是,您的模型是一个列表,它有自己的特殊版本Contains
,与IEnumerable
版本不同
请改为试穿以下尺码:
var theId = 6;
var deals = session.Query<Deal>()
.Where(x => x.UserIds.Any(id => id == theId))
.ToList();
var theId=6;
var deals=session.Query()
.Where(x=>x.UserIds.Any(id=>id==theId))
.ToList();
对于Raven无法理解的任何表达式树,只要试着用更原始的术语来思考即可。谢谢,忘记了这一点,但几周前就用这个解决了问题。谢谢,汉克斯,忘了这个,但几周前就用这个解决了这个问题。谢谢