0

クラスがある状況があります

[Table("SomeTable")]
public Class Thing
{
[Key]
public int Id { get; set; }
public string Description { get; set; }
public int ImAForeignKey { get; set; }
public bool HasStuff { get; set; }
}
...
...
public class ugly
{
public Thing Thing { get; set; }
public List<Thing> LotsOfThings { get; set; }
}

Thing は、データベース内のテーブルを表す EF クラスです... 次に、醜いコレクションを作成したいと思います。

List<ugly> gruesome;
using (var db = new ThingyDatabase())
{
gruesome = db.Thing
          .Where(r => r.HasStuff && r.ImAForeignKey == passedin.someFKvaluePassedIn )
          .Select(r => new ugly {
                     Thing = passedin,
                     LotsOfThings = ??
           })
    .ToList();
}

...

ListOfTHings プロパティにどのように値を設定するかがわかりません.... または、この方法で実行できるかどうか... Thing を精査している ID があり、この ID (外部キー) は Thing 内に複数のレコードを持つことができますが、そのうちの 1 つです。レコードは親レコードになり、残りは子になります。だから私が最終的に得られるのは、彼らの子供たちとのコレクションです...これが役に立てば幸いです.

何かご意見は?

4

3 に答える 3

0

あなたが提供した唯一の情報は醜いクラスとlinqステートメントだったので、これはうまくいくと思います:

List<ugly> gruesome;
using (var db = new ThingyDatabase())
{
gruesome = db.Thing
          .Where(r => r.HasStuff )
          .Select(r => new ugly {
                     Thing = r,
                     LotsOfThings = db.Think.Where(rr => rr.ImAForeignKey == r.Id).ToList()
           })
    .ToList();
}

これは、ThingにLotsOfThingsというプロパティがあることを前提としています。

これが機能しない場合は、これが作用しているものの構造を提供してください。

于 2012-11-20T16:45:08.717 に答える
0

あなたの質問とコメントを読んだ後、ナビゲーション プロパティだけが必要であることがわかりました。

public Class Thing
{
    public int Id { get; set; }
    public string Description { get; set; }
    public bool HasStuff { get; set; }

    [ForeignKey("ChildThings")]
    public int ImAForeignKey { get; set; }
    public ICollection<Thing> ChildThings { get; set; }
}

これで、次のことができます。

db.Thing
      .Where(r => r.HasStuff && r.ImAForeignKey == passedin.ImAForeignKey)
      .Select(r => new ugly {
                 Thing = r,
                 LotsOfThings = r.ChildThings
       })

しかし、インスタンスには必要なものがすべて含まれているuglyため、クラスはもう必要ないかもしれません。Thingさらに良い: これで十分です:

db.Thing.Include("ChildThings")
      .Where(r => r.HasStuff && r.ImAForeignKey == passedin.ImAForeignKey)
于 2012-11-20T21:24:20.793 に答える
0

私は最終的に次のことをしました:

List<ugly> gruesome;
using (var db = new ThingyDatabase())
{
  gruesome = db.Thing
      .Where(r => r.HasStuff && r.ImAForeignKey == passedin.someFKvaluePassedIn )
      .ToList();
}

var ughObj = new Ugly {
    Thing = passedin,
    LotsOfThings = gruesome
}

親(passedin)と子(恐ろしい)に必要なものを提供してくれます

皆さんありがとう

于 2012-11-20T19:59:22.757 に答える