linqで左/右結合に問題があります。私が持っているsql左揃えlinq lampda式
は、私がReadonlyCustomerテーブルに多くの顧客を持っている
public class Customer
{
prop string CustomerId { get; set; }
prop string LanguageGuid { get; set; }
}
public class ReadOnlyCustomer
{
prop string CustomerId { get; set; }
prop string LanguageGuid { get; set; }
}
を言うことができます。 私の場合、私は顧客テーブルにすべての顧客を持っていません。 私は結合を使用することはできません、私は内部結合には何もしません。 左または右の結合が必要です。
var test = db.Customer.Join(db.ReadOnlyCustomer, p => p.CustomerId, o => o.CustomerId, (c, o) => new ReadOnlyCustomer() { CustomerId = c.CustomerId, LanguageGuid = o.LanguageGuid ?? c.LanguageGuid });
この時点では、クエリがnull refで結合できないため、NULLポインタが返されます。
sql left joinと同じ左結合を実行するにはどうしたらいいですか。データソースに存在しない値に対してはNULLが返されます。
これは次のような構文をcomprehensingないlampdaにする必要があります(中oから....)
//あなたはその後に時々DefaultIfEmpty()
への呼び出しと一緒に、GroupJoin
を使用する必要があるデニス
なぜ「理解」構文に入れることができないという要件ですか?私が知っている唯一の簡単な解決策は、 '分かりやすい'構文でしか動作しません:http://codingsense.wordpress.com/2009/03/08/left-join-right-join-using-linq/ – mellamokb