c# - 如何使用 LINQ 过滤不为 null 的属性并获取其值来运行方法?
问题描述
如何创建 LINQ 以DoSomething()
仅调用一次以减少这些重复代码?请注意,有一些属性nameValue
我不需要做任何事情。DoSomething()
仅适用于这 4 个属性。
foreach (var nameValue in nameDetails.NameValue)
{
if (nameValue.FirstName != null)
{
DoSomething(nameValue.FirstName)
}
if (nameValue.MaidenName != null)
{
DoSomething(nameValue.MaidenName)
}
if (nameValue.MiddleName != null)
{
DoSomething(nameValue.MiddleName)
}
if (nameValue.Surname != null)
{
DoSomething(nameValue.Surname)
}
}
解决方案
将条件移入函数中,您可以编写
foreach (var nameValue in nameDetails.NameValue)
{
DoSomethingMaybe(nameValue.FirstName);
DoSomethingMaybe(nameValue.MaidenName);
DoSomethingMaybe(nameValue.MiddleName);
DoSomethingMaybe(nameValue.Surname);
}
void DoSomethingMaybe(string value)
{
if (value != null)
{
DoSomething(value)
}
}
完全可读,没有不必要的开销,没有一次性的对象。也许不是您期望的答案,但 LINQ 并不是魔法,它能让事情变得更好。
推荐阅读
- matlab - 在 MATLAB 中移动最大值和 LTI
- c# - 在运行时添加控件时出现问题(C# Windows 窗体)
- css - 理解 CSS 变换中的缩放后翻译
- android-studio - 像在 Android Studio 中一样在 vscode 中颤动代码格式
- c - 如何在C中检查指针的值
- javascript - Javascript getUserMedia 在 iphone safari 中首次加载时显示黑屏
- node.js - 使用 Axios 发送请求时出现“连接 ECONNREFUSED”错误
- local-storage - 尝试保存表单字段中的输入
- flutter - 如何将宽度设置为下拉按钮项目
- google-apps-script - 如何让我的电子表格每天自动添加一个数据点?