首页 > 解决方案 > 如何使用 lambda 操作来分配实体的一个属性?

问题描述

我有这样的代码:

 return new Match
                {
                    Id =  DataHelper.GetLong(dataReader, "MatchID") > 0 ?
                         DataHelper.GetLong(dataReader, "MatchID") : 
                          DataHelper.GetLong(dataReader, "ID")
                }

在这里,我想这样做以提高性能:

Id =  DataHelper.GetLong(dataReader, "Match");
Id =  Id > 0 ?  Id   :  DataHelper.GetLong(dataReader, "ID")

如何在上面的代码中使用 lambda 表示法做到这一点?

编辑:我同意我们不能对这些代码使用 lambda 表示法。定义其他功能将是我的问题的正确方法。

标签: c#linqlambda

解决方案


将您的条件登录提取到一个函数中,从对象初始化程序中调用该函数:

long GetMatchId(dataReader)
{
    var id = DataHelper.GetLong(dataReader, "Match");
    return (id > 0 ? id : DataHelper.GetLong(dataReader, "ID"));
}

return new Match {
    Id = GetMatchId(dataReader)
};

推荐阅读