0
그래서 일부보기는 DataTable에서 오는 트리보기가 있습니다. 나는 데이터 테이블을 가져올 때, 나는 다음과 같은 기본 규칙 트리를 업데이트 할 다음에 존재하는 트리에 있지만 DataTable을 두 DataTable의 차이 찾기
- 제거 노드를 트리가 필요하지만 업데이트 (다른 DateTime)
- 트리에는 없지만 DataTable에는 노드를 삽입하십시오. LastEdit의 추가,
Dictionary<Guid, NoteNode> MyHashNoteToNode;
, NoteNode가 TreeNode를으로부터 유도된다 : 트리 노드는 GUID (DataTable에있는 기본 키) 해싱 I는 사전이이를 위해
, DateTime 필드. 지금까지 너무 진부합니다.
트리와 DataTable의 차이를 나타내는 3 세트를 찾으려면 아래 코드를 작성하십시오. 나는 3 세트 (Insert, Edit, Delete)를 반환 할 정말 간단한 Linq 쿼리가 있다는 것을 듣고 싶다. 아니면 어딘가에서 누락 된 메소드 일 것이다. 아니면 꽤 최적입니까?
// Find all items that need inserting.
List<DataRow> toInsert = new List<DataRow>();
foreach (DataRow row in MyNotes.Rows)
{
NoteNode node = null;
MyHashNoteToNode.TryGetValue((Guid)row["ID"], out node);
if(node == null)
{
toInsert.Add(row);
}
}
// Find all items that need editing/changing.
List<DataRow> toEdit = new List<DataRow>();
foreach (DataRow row in MyNotes.Rows)
{
NoteNode node = null;
MyHashNoteToNode.TryGetValue((Guid)row["ID"], out node);
if(node != null)
{
if((DateTime)row["Edited"] != node.LastEdit)
{
toEdit.Add(row);
}
}
}
// Find all items that need deleting.
List<NoteNode> toDelete = new List<NoteNode>();
foreach (NoteNode node in MyHashNoteToNode.Values)
{
if (!MyNotes.Rows.Contains(node.Key))
{
toDelete.Add(node);
}
}
}
나는 이것을 좋아한다. 감사. – Robinson