[c#] '包含()'解決方法使用Linq到實體?



Answers

你可以重新編寫一些e-sql(注意關鍵字“it”):

return CurrentDataSource.Product.Where("it.ID IN {4,5,6}"); 

以下是我用來從集合YMMV生成一些e-sql的代碼:

string[] ids = orders.Select(x=>x.ProductID.ToString()).ToArray();
return CurrentDataSource.Products.Where("it.ID IN {" + string.Join(",", ids) + "}");
Question

我試圖創建一個使用Silverlight ADO.Net數據服務客戶端API(因此Linq To Entities)在where子句中使用id列表的查詢。 有誰知道解決方法包含不被支持?

我想要做這樣的事情:

List<long?> txnIds = new List<long?>();
// Fill list 

var q = from t in svc.OpenTransaction
        where txnIds.Contains(t.OpenTransactionId)
        select t;

試過這個:

var q = from t in svc.OpenTransaction
where txnIds.Any<long>(tt => tt == t.OpenTransactionId)
select t;

但是得到了“方法'Any'不被支持”。




我不確定SilverLigth,但是在對像中,我總是使用any()來處理這些查詢。

var q = from t in svc.OpenTranaction
        where txnIds.Any(t.OpenTransactionId)
        select t;



除了選定的答案。

Expression.Or替換為Expression.OrElse以與Nhibernate一起使用並修復Unable to cast object of type 'NHibernate.Hql.Ast.HqlBitwiseOr' to type 'NHibernate.Hql.Ast.HqlBooleanExpression'異常。












Links