0


0

ADO.Net Entity Frameworkを使用してasp.net mvcの2つのテーブルからデータを取得する

私の質問をよく読んで私に答えてください。

table1とtable2の2つのテーブルがあります。

表1では、AddressID(主キー)、Address1、Address2、Cityなどの列があります。

table2では、ContactID(主キー)、AddressID(外部キー)、姓、名という列があります。

結合操作を使用して、両方のテーブルからデータを取得できます。

MVCアプリケーションでモデルを作成しました。 エンティティエディタで両方のテーブルを見ることができます。

私のソリューションエクスプローラのViewDataフォルダに、ContactViewData.csとSLXRepository.csの2つのクラスを作成しました。

ContactViewData.csには、次のコードがあります。

public IEnumerable contacts
{
    get;
    set;
}

SLXRepository.csには、次のコードがあります。

public  IEnumerable GetContacts()
{
    var contact =
    (
        from c in context.CONTACT
            join a in context.ADDRESS on c.ADDRESSID equals a.ADDRESSID
            select new
            {
                a.ADDRESS1,
                a.ADDRESS2,
                a.CITY,
                c.FIRSTNAME,
                c.LASTNAME
            }
    );

    return contact;
}

戻り型でエラーが発生しています

`タイプ 'System.Linq.IQueryable’を 'System.Collections.Generic.IEnumerable’に暗黙的に変換することはできません。 明示的な変換が存在します(あなたはキャストを見逃していますか?) `

1 Answer


1


Linq2Sqlでは、あなたの特定のクエリはIQueryableオブジェクトを返します。

メソッドの戻り型をIQueryableに変更することができます。

パブリックIQueryable連絡先{get;セット; }

public IQueryable GetContacts(){var contact =(c内のcontext.CONTACTからa内に結合します。c.ADDRESSIDと等しいa.ADDRESSIDを選択します。 。苗字             }     );

連絡先を返します。 }

あるいは、.AsEnumerable()関数を使用して戻り値をキャストすることもできます。

public IEnumerable GetContacts(){var contact =(c内のcontext.CONTACTからa内に結合します。c.ADDRESSIDと等しいa.ADDRESSIDを選択します。 。苗字             }     );

contact.AsEnumerable()を返します。 }