2011-02-17 92 views
0

我一直在使用Scott Guthrie的blog post中的DynamicQueryable Linq擴展。DynamicQueryable如何支持Array運算符?

該文檔有一個受支持的運算符表。一個主要運營商是以下情況:

X [...] 陣列或索引訪問。多維數組不受支持。

但是,我不明白它如何使用。

我沒有想到下面的任何工作,事實上他們沒有。

var ctx = new MyDbContext(); 
var parameters = new Object[] { new int[] { 1, 2, 3 } }; 

var qry = ctx.Set<User>().Where<User>("it.Id in @0", parameters); 
var qry = ctx.Set<User>().Where<User>("it.Id.In(@0)", parameters); 
var qry = ctx.Set<User>().Where<User>("it.Id = @0", parameters); 
var qry = ctx.Set<User>().Where<User>("@0.Contains(it.Id)", parameters); 

它基本上是一個查詢,但我不知道如何表達它。

回答

0

這可能是一個誤解。 Meant是可以在特定索引位置查詢集合元素。例如:

public class Order 
{ 
    public List<OrderDetail> OrderDetails { get; set; } 
} 

public class OrderDetail 
{ 
    public string Description { get; set; } 
} 

然後你就可以查詢它通過在第三的OrderDetail的詳細說明「自行車」的所有訂單:

string parameter = "Bicycle"; 
var qry = ctx.Set<Order>().Where<Order>("it.OrderDetails[2].Description == @0", 
    parameter); 

我覺得你的目的,你需要建立一個「或「鏈"it.Id == 1 or it.Id == 2 or it.Id == 3"(或在循環中動態構建此查詢字符串),而不在Where方法中使用參數。

+0

這聽起來似乎合理。謝謝。 – jedatu 2011-03-22 19:40:00