タグを使用している場合linq-to-entitiesエンティティフレームワークを使用していると仮定します。
親と子の間に1対多の関係があります。すべての親は0以上の子を持ち、すべての子はちょうど1つの親に属しています。
多対多の関係になっている可能性もあります。クラスはわずかに異なります(データベースにはDbContextにはない余分なテーブルがあります)が、問題は変わりません。
あなたの単純化のためかもしれませんが、あなたの問題を引き起こす可能性のある奇妙なことがクラス内で見られます。以下のように適切な1対多の関係がモデル化されたエンティティフレームワークでは
:
public class Parent
{
public int Id {get;set;}
public string name{get;set;}
// Every parent has zero or more Children
public virtual ICollection<Child> Children {get;set;}
}
public class Child
{
public int id {get;set;}
public bool Imported{get;set;}
public DateTime? TimeSpan {get;set;}
// every Child belongs to exactly one Parent using foreign key
public int ParentId {get; set;}
public Parent Parent {get; set;}
}
あなたの親の子どもたちのコレクションが一覧にすることはできません。 ChildList [3]とはどういう意味ですか?
基本的に、私はすべての親の子を含めるようにしようとしていますが、順番 彼らチェックしたID降順によると:
また、このコレクションは、(SO: Understanding code first virtual propertiesを参照)は、仮想である必要があり
あなたは書きました最初のもの(たとえば最新のもの) が== falseおよびtimeSpan == nullをインポートし、この条件を満たす子を持つ 親行のみをインポートした場合。
ビットは難しい理解し、あなたが親の配列を有しているようだ、とあなたは最高たchildID児が輸入し、ヌルのTimeSpanを持っていない場合にのみ、それらの親とその子供たちを、したいです。
var result = dbContext.Parents
.Select(parent => new
{
// Take all Parent properties you need in your end result, for example
Id = parent.Id,
Name = parent.Name,
Children = parent.Children
.OrderByDescending(child => child.Id),
})
.Select(parent => new
{
Id = parent.Id,
Name = parent.Name,
Children = parent.Childrent,
NewestChild = parent.Children.FirstOrDefault(),
})
// keep only the parents you want to keep:
.Where(parent => parent.NewestChild != null
&& !parent.NewestChild.Imported
&& parent.NewestChild.TimeSpan == null));
多分関連https://stackoverflow.com/questions/32751427/conditional-include-inentity-framework – OmG