私はLINQをかなり新しくしており、動作の不一致を回避できません。どんな知識のある入力でも大変感謝しています。私はSOや他の場所でも同様の問題を抱えていますが、彼らは役に立たないようです。LINQ - 以前に使用されていて検証済みのクエリ条件で '式を変換できませんでした'
私はとても簡単な設定 - 会社のテーブルと住所のテーブルを持っています。各企業は0以上のアドレスを持つことができ、> 0の場合はメインアドレスとして指定する必要があります。私は外部の結合を使用し、それに応じて選択ステートメントを変更する0のアドレスがある場合を処理しようとしています。
私は現在、出力をGridViewに直接バインドしていますので、クエリ内ですべての処理を続けたいと思います。
次が仕事
IQueryable query =
from comp in context.Companies
join addr in context.Addresses on comp.CompanyID equals addr.CompanyID into outer // outer join companies to addresses table to include companies with no address
from addr in outer.DefaultIfEmpty()
where (addr.IsMain == null ? true : addr.IsMain) == true // if a company has no address ensure it is not ruled out by the IsMain condition - default to true if null
select new {
comp.CompanyID,
comp.Name,
AddressID = (addr.AddressID == null ? -1 : addr.AddressID), // use -1 to represent a company that has no addresses
MainAddress = String.Format("{0}, {1}, {2} {3} ({4})", addr.Address1, addr.City, addr.Region, addr.PostalCode, addr.Country)
};
を行いますが、これはだから私は
MainAddress = (addr.AddressID == null ? "" : String.Format("{0}, {1}, {2} {3} ({4})", addr.Address1, addr.City, addr.Region, addr.PostalCode, addr.Country))
とするMainAddressフィールドを更新し、 ", ,()
"
としてのGridViewで空のアドレスが表示されます今私はCould not translate expression
エラーとerewのspewey自動生成コードの束を得ていますrは私にはほとんど意味がありません。
私はMainAddressに追加条件があるAddressId上の労働条件に違いはありませんので、誰もがここで何が起こっているのか私に言うことができますか?
大変助かりました。
が質問に "spewey自動生成されたコード" を追加することもできます。 – Bert