は、私があるAddressIdの、そのアドレスを参照して、対応する引用のリストを取得する必要があります(PackageIdを介して)。この時点では、引用が既に設定されています。LINQのGroupJoin選択クエリ
Quote.PackageId = Package.PackageId
INPUT:
が、私は "パッケージののPackageIDに参加する必要がある特定のアドレスのすべての引用符を取得するには3 ShippingRequests
Address1 = {Package1, Package2, Package3}
Address2 = {Package5, Package8}
Address3 = {Package11, Package12}
と入力し、次のしていると仮定」パッケージIDです。そうすれば、この見積もりがこの住所に属することがわかります。
私はこれを試してみたが、私はエラーを取得:これまで
var addrQuotes = ServiceModel.ShippingRequest
.GroupJoin(ServiceModel.QuotesResult.Quotes, c1 => c1.ShippingPackages
.SelectMany(y => y.Package.Id), c2 => c2.PackageId, (c1, c2) =>
new {
c1.Address.Id,
Quotes = c2.Select(e =>
{
e.Price = c1.ShippingPackages.Any(
x => x.ShippingItems.All(y => y.IsSkipped))
? 0
: e.Price + ExtraCost;
e.Provider = GetName(e.Code);
return e;
})
}).OrderBy(q => q.Id);
一つのキャビアは、私もパッケージに行くShippingItems(複数可)をチェックする必要があるということです。 ShippingPackage内のすべてのShippingItemにbooleanフラグ "IsSkipped"がtrueに設定されている場合は、QuoteのPriceを0に設定し、そうでない場合はQuote.Priceに余分なコストを追加します。
OUTPUT:
Address1 = [Quote1, Quote20, Quote21, Quote50, ...]
Address2 = [Quote3, Quote100...]
Address3 = [Quote5, Quote33, Quote12]
大歓迎任意のヘルプ。
あなたは何も参加していません。私は引用符でパッケージに参加する必要があります – BobSwanson
私は投稿を更新して参加を行いました。 – jdweng
これが助けになりました。感謝 – BobSwanson