In the absence of any replies I have implemented the following function:
public List<T> GetByFk<fkT, fkIdT>(fkIdT id, string propertyName, bool inverse)
{
ICriteria criteria = session.CreateCriteria(persitentType);
criteria.CreateCriteria(propertyName).Add(Expression.Eq("ID", id));
List<T> list = ConvertToGenericList(criteria.List());
if (inverse)
{
List<T> all = GetAll();
foreach(T obj in list)
{
all.Remove(all.Find(delegate(T t)
{
return t.Equals(obj);
}));
}
list = all;
return list;
}
Please help me find a better way without needing an expensive loop!
|