如何在c#中将foreach循环转换为lambda表达式

0 c#

foreach (IndexingField field in document.IndexingFields)
{
    if (field.TableColumn.ToLower() == "esig"&& field.Data != null && !string.IsNullOrEmpty(field.Data.ToString()) && field.Data.ToString() != "N")
    {                               
        EsigBase64Value = field.Data.ToString();
        field.Data = "Y";                                
    }                    
}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的每个循环,我想将每个循环的这个转换为 lambda 表达式,请帮助我

Mar*_*ell 5

循环和 lambda 表达式是具有不同目的的不同事物。没有与此意图直接相关的 lambda 表达式,并且像常规 LINQ 方法Select旨在执行投影(创建新数据),而不是突变(更改现有数据)。

简而言之:不要管代码 - 原样没问题。我的主要观察EsigBase64Value是当有零个或多个记录与if测试匹配时,的值是什么。您可能还想提升field.Data.ToString()值,因此它只发生一次:

var data = field.Data.ToString();
if (...)
{

}
Run Code Online (Sandbox Code Playgroud)

data在每个field.Data.ToString()出现的地方使用)

并且可能使用不区分大小写的重载string.Equals而不是field.TableColumn.ToLower() == "esig"