NDatabase List<T> into IBindingList

本文关键字:into IBindingList gt lt NDatabase List | 更新日期: 2023-09-27 17:56:14

我正在使用 NDatabase,但在尝试绑定使用基本数据访问层 (BaseDAL) 检索的IEnumerable<T>时遇到问题。

public IEnumerable<T> GetMany<T>()
{
  using(var odb = OdbFactory("Example.db"))
  {
    return odb.AsQueryable<T>().ToList();
  }
}

在我的实例中TEmployee.

public interface IEmployee
{
  string Username { get; set; }
  List<UserConfiguration> ConfigurationList { get; set; }  
}

本质上,我需要一个可用于绑定到网格的List<Employee>(目前我得到the underlying datasource doesn't support editing)。

我知道我需要以某种方式实现IBindingList,但是实现这一点是巨大的!我想知道是否有人可以指出我正确的方向?或者我将不得不按照以下思路:

public class BindableList<T> : IObjectSet<T>, IBindingList {}

谢谢!

NDatabase IObjectSet 结构式

public interface IObjectSet<TItem> : ICollection<TItem>, IEnumerable<TItem>, IEnumerable
{
  TItem GetFirst();
  bool HasNext();
  TItem Next();
  void Reset();
}

NDatabase List<T> into IBindingList

愚蠢的我...

BindingList<T>

上面需要 IList 的构造函数,所以我只需要将我的BaseDAL方法更改为:

public IEnumerable<T> GetMany<T>()
{
  using(var odb = OdbFactory("Example.db"))
  {
    return new BindingList<T>(odb.AsQueryable<T>().ToList());
  }
}

你写的代码可以这样改进:

public IEnumerable<T> GetMany<T>()
{
  using(var odb = OdbFactory("Example.db"))
  {
    return new BindingList<T>(odb.QueryAndExecute<T>().ToList());
  }
}

此代码并未使用所有 Linq to NDatabase 的东西(包装器),在这种情况下您不需要这些东西。