gpt4 book ai didi

c# - 创建通用 LINQ 函数以返回传入的类型

转载 作者:行者123 更新时间:2023-11-30 20:22:04 31 4
gpt4 key购买 nike

两个 LINQ 方法做同样的事情但是接受和返回不同的类型

private IQueryable<Type1>FilterBySomething(IQueryable<Type1> results)
{
if (ThisField!= null)
{
results = results.Where(x => x.Thisfield == ThisField.Value);
}
return results;
}

private IQueryable<Type2>FilterBySomething(IQueryable<Type2> results)
{
if (ThisField!= null)
{
results = results.Where(x => x.Thisfield == ThisField.Value);
}
return results;
}

问题在于重复。我想要一个执行此操作的通用函数,但我不知道该怎么做

最佳答案

  1. 引入新界面:

    interface IThisfieldSupported
    {
    string Thisfield {get;set;}
    }
  2. 设置限制:

    private IQueryable<Type1> FilterBySomething<Type1>(IQueryable<Type1> results) where Type1 : class, IThisfieldSupported
    {
    if (ThisField!= null)
    {
    results = results.Where(x => x.Thisfield == ThisField.Value);
    }
    return results;
    }
  3. 用不同的类调用它,但在这个类中实现 IThisfieldSupported:

    class Data : IThisfieldSupported
    {
    string Thisfield { get;set; }
    int Id { get;set; }
    }
    ...
    var data = new Data[10];
    var result = FilterBySomething(data);

关于c# - 创建通用 LINQ 函数以返回传入的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32632934/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com