通用OrderBy方法

mie*_*oor 1 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;
    }
Run Code Online (Sandbox Code Playgroud)

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

Per*_*t28 5

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

interface IHaveOrderedProperty
{
    int OrderedProperty { get ; } 
}
Run Code Online (Sandbox Code Playgroud)

并迫使T作为IHaveOrderedProperty

public async Task<DateTime> GetLatestModifiedDateAsync<T>() 
      where T : IHaveOrderedProperty, new()
Run Code Online (Sandbox Code Playgroud)