Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在c语言中传递方法中的一些顺序条件#_C#_Func - Fatal编程技术网

C# 如何在c语言中传递方法中的一些顺序条件#

C# 如何在c语言中传递方法中的一些顺序条件#,c#,func,C#,Func,我正在创建一个传递可选谓词的方法,但在某些情况下,我需要对从该方法过滤的数据进行排序。我不知道如何通过谓词本身传递顺序条件,或者有其他方法可以做到这一点 但请记住,我需要动态传递排序条件,因为在不同的部分中有不同的排序条件 当我从方法中获取数据时,我会应用排序条件,但正如您在方法中看到的,AutoMapper只从TechArchiveNoSubsYpdcResult模型中获取必要的属性。有时我需要从模型techarchivenosubsypdcsult中订购属性不包含在CompletedJobV

我正在创建一个传递可选谓词的方法,但在某些情况下,我需要对从该方法过滤的数据进行排序。我不知道如何通过谓词本身传递顺序条件,或者有其他方法可以做到这一点

但请记住,我需要动态传递排序条件,因为在不同的部分中有不同的排序条件

当我从方法中获取数据时,我会应用排序条件,但正如您在方法中看到的,AutoMapper只从
TechArchiveNoSubsYpdcResult
模型中获取必要的属性。有时我需要从模型
techarchivenosubsypdcsult
中订购属性不包含在
CompletedJobViewModel
模型本身中的数据

public IEnumerable<CompletedJobViewModel> GetCompletedJobsViewModels(Guid vesselId, int year, Func<TechArchiveNoSubsYpdcResult, bool> predicate = null)
    => Mapper.Map<IEnumerable<CompletedJobViewModel>>(GetArchiveNoSubsYpdcResults(vesselId, year).OptionalWhere(predicate));

如果需要按单个字段排序,可以使用“键选择器”功能,如下所示:

public IEnumerable<CompletedJobViewModel> GetCompletedJobsViewModels<TKey>(Guid vesselId, int year, Func<TechArchiveNoSubsYpdcResult, bool> predicate = null, Func<TechArchiveNoSubsYpdcResult,TKey> keySelector = null) {
    var res = Mapper.Map<IEnumerable<CompletedJobViewModel>>(GetArchiveNoSubsYpdcResults(vesselId, year).OptionalWhere(predicate));
    if (keySelector != null) {
        res = res.OrderBy(keySelector);
    }
    return res;
}
public IEnumerable GetCompletedJobsViewModels(Guid vesselId,int year,Func谓词=null,Func键选择器=null){
var res=Mapper.Map(GetArchiveNoSubsYpdcResults(vesselId,year).OptionalWhere(谓词));
if(keySelector!=null){
res=res.OrderBy(键选择器);
}
返回res;
}

如果我有多个字段怎么办?因为在我的情况下我不止一个field@RajmondBurgaj然后你需要一个完全不同的方法:你需要使用许多键选择器,并且你需要使其非通用返回I可比较。由于没有其他方法可以解决这种情况,我接受你的答案为正确答案,谢谢你的时间:)
public IEnumerable<CompletedJobViewModel> GetCompletedJobsViewModels<TKey>(Guid vesselId, int year, Func<TechArchiveNoSubsYpdcResult, bool> predicate = null, Func<TechArchiveNoSubsYpdcResult,TKey> keySelector = null) {
    var res = Mapper.Map<IEnumerable<CompletedJobViewModel>>(GetArchiveNoSubsYpdcResults(vesselId, year).OptionalWhere(predicate));
    if (keySelector != null) {
        res = res.OrderBy(keySelector);
    }
    return res;
}