【发布时间】:2021-11-07 23:35:18
【问题描述】:
我想从 LINQ 中选择值
但是这些值取决于我在 C# 中的 windows 窗体中的另一个控件
这是我的代码
var lstInfo = grdBreakDown.Rows.Cast<DataGridViewRow>()
.Where(x => !x.IsNewRow)
.Select(x => (tag: x.Cells["tag"].Value.ToString(), Scheme: x.Cells["Scheme"].Value.ToString(), Value: x.Cells["Value"].Value.ToString()))
.Distinct()
.ToList();
lvwInfo.Items.AddRange( lstInfo
.Select(x => new ListViewItem(new string[] { x.tag, x.Scheme, x.Value }))
.ToArray()
);
此代码完美运行并显示所有类似这样的方案
Tag Scheme Value
Red Master 88
Red Master 14
Red Admin 39
Red Admin 31
Blue Master 91
Blue Master 10
Blue Admin 54
Blue Admin 04
但我想进行一些更改,并且仅在选中 windows 窗体中的复选框时显示方案和值,如果未选中则仅显示空字符串
类似的东西
.Select(x => (
tag: x.Cells["tag"].Value.ToString(),
Scheme:
if(
(!cbxMaster.checked && x.Cells["Scheme"].Value.ToString() == "Master")
||
(!cbxAdmin.checked && x.Cells["Scheme"].Value.ToString() == "Admin"), "", x.Cells["Scheme"].Value.ToString()
),
Value:
if((!cbxMaster.checked && x.Cells["Scheme"].Value.ToString() == "Master")
||
(!cbxAdmin.checked && x.Cells["Scheme"].Value.ToString() == "Admin"), "", x.Cells["Value"].Value.ToString()
)
)
因此,如果 Master 勾选了 Admin,则不会勾选
输出会是这样的
Tag Scheme Value
Red Master 88
Red Master 14
Red
Blue Master 91
Blue Master 10
Blue
但这不起作用。
如何用 linq 做到这一点?
【问题讨论】:
-
您的字符串文字未正确引用。我已经为你更正了。
-
把数据库的工作交给数据库
-
@LeandroBardelli 控件是在windows窗体中决定的,是前端问题
-
“但这不起作用。” - 你有什么错误?