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();
}
}
在我的实例中T
是Employee
.
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();
}
愚蠢的我...
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 的东西(包装器),在这种情况下您不需要这些东西。