0

この質問は、他の質問と いますが、重複していないようです。そうである場合は、明確にしてください。喜んでマージさせていただきます。

結合を含む linq-to-entities クエリを使用して、書き込み可能な DataGridView にバインドしたいと考えています。モデルは次のとおりです。

代替テキスト

非正規化された DataGridView は、次のようにバインドする必要があります。

代替テキスト

次のコードはバインドしますが、linq-to-entities クエリが匿名型を返すため、読み取り専用の DataGridView になります (この投稿を参照)。非正規化を行うには匿名型が必要だと思うので、私は行き詰まっています。

var query = from t in iDictionaryContext.DisplayTexts
        from l in iDictionaryContext.Languages
        where
            t.LanguageID == l.LanguageID
        select new
         {
             Key = t.DisplayKey,
             Text = t.DisplayText1,
             Language = l.LanguageName
         };

ここで提案されている解決策も試しましたが、linq-to-sql には適用されますが、linq-to-entities には適用されないようです。bindingsource.datasource を linq-to-entities クエリに設定すると、「パラメーターなしのコンストラクターと初期化子のみが LINQ to Entities でサポートされています」という読み取り例外がスローされます。

アドバイスありがとうございます。

ティム

4

1 に答える 1

1

そのようなプレゼンテーションタイプを定義するだけです。コンストラクターでオブジェクトを渡す必要はありません。

public class LanguageDisplayTextPresentation 
{
    public int Key { get; set; }
    public string Text { get; set; }
    public string Language { get; set; }
}

その後

var query = from t in iDictionaryContext.DisplayTexts
    from l in iDictionaryContext.Languages
    where
        t.LanguageID == l.LanguageID
    select new LanguageDisplayTextPresentation 
    {
        Key = t.DisplayKey,
        Text = t.DisplayText1,
        Language = l.LanguageName
    };
于 2011-01-07T23:58:22.647 に答える