通用OrderBy方法

时间:2014-07-16 14:04:06

标签: c# sqlite generics

我正在尝试创建一个通用方法来获取由date属性排序的最新项目。如下所示:

public async Task<DateTime> GetLatestModifiedDateAsync<T>() where T : new()
    {
        var result = await db.Table<T>()
                             .OrderByDescending(e => e.OrderedProperty)
                             .FirstOrDefaultAsync();

        return result.ModifiedAt;
    }

这显然不起作用,因为在泛型类型上找不到属性OrderedProperty,但我该如何才能使其正常工作?

1 个答案:

答案 0 :(得分:5)

如果您确定所有T都有OrderedProperty属性,只需创建一个界面

interface IHaveOrderedProperty
{
    int OrderedProperty { get ; } 
}

并强制TIHaveOrderedProperty

public async Task<DateTime> GetLatestModifiedDateAsync<T>() 
      where T : IHaveOrderedProperty, new()