2
"Contains"メソッドでエラーが発生しても失敗します。Subsonic 3 - IEnumerable.Containsを使用してクエリをサポートしていますか?
List<int> usedID= new List<int> { 1, 2, 3 };
var f = WebPageContent.Find(x => !usedID.Contains(x.PageID));
何が別のアプローチですか?
これはどちらか動作しません:
var dd = from i in WebPageContent.All()
where !usedID.Contains(i.PageID)
select i;
これは行いますが、それは推奨されるアプローチです:
var table = new WebPageContentTable(_db.DataProvider);
var g = new SubSonic.Query.Select()
.From(table)
.Where(table.ID)
.In(usedID)
.Execute();
あなた、ありがとう! – Jon
usedIdが空の場合、Findはnullのために失敗します。 protected virtual Expression VisitUnary(UnaryExpression u) { 式オペランド= this.Visit(u.Operand); // **********オペランドがNULLの場合******** if(オペランド!= u.Operand) { return Expression.MakeUnary(u.NodeType、operand、u .Type、u.Method); } return u; } – Jon
私もこの問題に遭遇しましたが、上記の答えはうまくいきますが、LINQ構文のエラーではなく、SubSonic SQLトランスレータに問題があると思います。 SubSonicの作家であるRob Coneryも、うまくいくはずだと言います。この参照を参照してください:http://blog.wekeroad.com/blog/creating-in-queries-with-linq-to-sql/ – Steve