1

Linq Dynamic Queryでは、Scott Guthrie が Linq クエリの例を示しています。

var query =
    db.Customers.
    Where("City == @0 and Orders.Count >= @1", "London", 10).
    OrderBy("CompanyName").
    Select("new( CompanyName as Name, Phone)");

投影に注意してくださいnew( CompanyName as Name, Phone)。このようなクラスがある場合:

public class CompanyContact {
    public string Name {get;set;}
    public string Phone {get;set;}
}

各レコードで foreach を実行して別のデータ構造にダンプすることなく、CompanyContact データ型を使用して彼の結果を本質的に「キャスト」するにはどうすればよいでしょうか? 私の知る限り、使用可能な唯一の .Select は、文字列とパラメーター リストのみを受け取る動的クエリ バージョンです。

4

1 に答える 1

4

あなたが引用している記事からわかる限り、動的クエリメソッドはIQueryable <>オブジェクトを返します。これは、通常のSelect()が使用可能であることを意味します。

var query = 
    db.Customers. 
    Where("City == @0 and Orders.Count >= @1", "London", 10). 
    OrderBy("CompanyName"). 
    Select( c => new CompanyContact {Name = c.CompanyName, c.Phone}); 

Selectのタイプを明示的に指定する必要がある場合があります

    Select<Customer>( c => new CompanyContact {Name = c.CompanyName, c.Phone}); 
于 2010-03-30T03:41:00.863 に答える