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 属性....或者我是否可以这样做...记录将是父记录,其余的是子记录。所以我最终会和他们的孩子一起收集一些东西......希望这会有所帮助。

有什么想法吗?

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 中有一个名为 lotofThings 的属性。

如果这不起作用,请提供其作用的结构。

于 2012-11-20T16:45:08.717 回答
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 回答
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 回答