You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
35 lines
1.4 KiB
35 lines
1.4 KiB
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace Marr.Data
|
|
{
|
|
/// <summary>
|
|
/// This utility class allows you to join two existing entity collections.
|
|
/// </summary>
|
|
public class EntityMerger
|
|
{
|
|
/// <summary>
|
|
/// Joines to existing entity collections.
|
|
/// </summary>
|
|
/// <typeparam name="TParent">The parent entity type.</typeparam>
|
|
/// <typeparam name="TChild">The child entity type.</typeparam>
|
|
/// <param name="parentList">The parent entities.</param>
|
|
/// <param name="childList">The child entities</param>
|
|
/// <param name="relationship">A predicate that defines the relationship between the parent and child entities. Returns true if they are related.</param>
|
|
/// <param name="mergeAction">An action that adds a related child to the parent.</param>
|
|
public static void Merge<TParent, TChild>(IEnumerable<TParent> parentList, IEnumerable<TChild> childList, Func<TParent, TChild, bool> relationship, Action<TParent, TChild> mergeAction)
|
|
{
|
|
foreach (TParent parent in parentList)
|
|
{
|
|
foreach (TChild child in childList)
|
|
{
|
|
if (relationship(parent, child))
|
|
{
|
|
mergeAction(parent, child);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|