创建通用方法

时间:2016-04-28 10:48:21

标签: c# linq

有人可以帮助以下......它让我疯了......

ApplicationDbContext

3 个答案:

答案 0 :(得分:2)

听起来你可能只想要一个Func<Model, int>参数:

public IEnumerable<int> GetData(Func<Model, int> projection)
{
    return myData.Select(projection).Distinct();
}

然后你可以:

var modelIds = GetData(m => m.ModelID);
var vehicleIds = GetData(m => m.VehicleID);

这就是你之后的事吗? (假设myDataIEnumerable<Model>。如果它是IQueryable<Model>,您可能希望接受Expression<Func<Model, int>>。)

答案 1 :(得分:1)

目前尚不清楚你究竟追求的是什么。也许是这样的?

public static IEnumerable<TResult> GetData<TModel, TResult> (this IEnumerable<TModel> enumerable, Func<TModel, TResult> projection)
{
    return enumerable.Select(projection);
}

而不是像这样打电话:

var ints = myData.GetData<MyModel,int>(m=>m.ModelID).Distinct();
var doubles = myData.GetData<MyModel,double>(m=>m.DoubleProp).Distinct();

等...

答案 2 :(得分:0)

public ICollection<T> FindAllWhere(Expression<Func<T, bool>> selectSelector)
{
    ICollection<T> elements = EntitySet.Select(selectSelector).ToList().Distinct();

    return elements;
}