1

エンティティであるタイプ「tableContact」の List<>() を取得する関数を作成しようとしています (単純な select ステートメントを実行するときのようなものです: query.ToList();)

しかし、「null object reference」エラーが発生し続けたため、これはイライラしています。何らかの理由で「結合」ステートメントが機能しないため、別の linq ステートメントを試しました。

左結合したい Object2Contacts テーブルがあり、オブジェクトを検索して、このオブジェクトのすべての連絡先を表示しようとしています。また、「匿名型」をエンティティ テーブルに戻す方法もわかりません。

また、すべてのオブジェクトに連絡先があるわけではないため、場合によっては null List<> を返す必要があります。

public List<tableContact> getContactsForObject(int oid)
    {
        if (oid > 0)
        {
            var query = (from s in entities.tableContacts
                         from o in entities.tableObject2Contacts
                         where s.contact_id == o.contact_id
                         where o.object_id == oid                         
                         select new { s });
            if (query != null)
            {
                IEnumerable<tableContact> e = (IEnumerable<tableContact>)query.ToList();
                return (List<tableContact>)e;
            }
        }
        return new List<tableContact>();
    }

返されたオブジェクトをループしたい...例:

foreach ( tableContact c in MyList){
   WriteLine(c.Name);
}

編集 私も試しました:

List<tableContacts> contacts = (from s in entities.tableContacts
        join o in entities.tableObject2Contacts
        on s.contact_id equals o.contact_id
        where o.object_id == oid                         
        select s).ToList();

その後、それをリストに戻すことはできず、「null参照」のままです。

EDIT 2 はい、私が実行しているクエリは間違いなく「空の」リストをもたらす可能性があります。空のリストは気にしませんが、「オブジェクトの null 参照」を与えるべきではありません。

4

2 に答える 2

0

気にしないでください、「私もこれを試しました」は実際には正しいコードですが、何らかの理由でエンティティを適切に確立していなかったため、null が返されていました。

私はまだ「匿名型」について非常に混乱していますが、「匿名型」を返す関数を作成する方法がわかりません。

于 2013-07-08T21:55:26.757 に答える