2
var query = from ch in Client.wcf.context.CashHeading
    where ch.Id_customer == customern//cc.Id
    from cs in Client.wcf.context.Cash
    where cs.Id_cashheading == ch.Id
    from gg in Client.wcf.context.Good
    where gg.Id == cs.Id_good
    select gg.Price.Value;

私はそれを処理する内部エラーを取得しています:

Linq式をURIに変換する際のエラー:最後のナビゲーションの後でのみクエリオプション(orderby、where、take、skip)を指定できます。

理由がわかりません、完全なソースは ここ、GitHubにあります

4

1 に答える 1

3

基本的に、次のように、すべてのナビゲーション ( ) が実行された後、where 句を 1の where句に凝縮する必要があります。from

var query = 
    from ch in Client.wcf.context.CashHeading
    from cs in Client.wcf.context.Cash
    from gg in Client.wcf.context.Good
    where 
        ch.Id_customer == customern && //cc.Id
        cs.Id_cashheading == ch.Id &&
        gg.Id == cs.Id_good
    select gg.Price.Value;

確かに、すべてのテーブルをクロス結合してからフィルタリングを実行するように見えるため、これは最適とは思えませんが、おそらくインターフェイスの実装を扱っていることを覚えておいてください。変換されたクエリを処理するものによって解釈され、最適化されます。IQueryable<T>

于 2012-07-20T13:20:59.217 に答える