【发布时间】:2019-10-29 08:20:57
【问题描述】:
大家好,这是我第一次提出关于堆栈溢出的问题,所以我会尽可能地描述一下。我一直在努力思考 lambda 函数,我认为现在是使用该函数的合适时机。
我有一个 sql 表,其中有一列 machineNo 和另一列名为 count 作为是或否的标志,无论它是否计数。
我的目标是根据 sql 中的 machineNo 列对列进行分组。我已经从 sql 返回列表没有问题。
我有 现货 2 现货 1 现货 1 现货 1 点 1
它应该显示例如
lbl1.Text = 4 lbl2.Text = 1
public void listlambda()
{
con.OpenConnection();
List<string> mchno = con.LoadList("Select mchNo from tbl_mch_ability where count = 0", "mchNo");
var num = mchno.GroupBy(n => n == "mchNo");
lbl1.Text = mchno.GroupBy(m => m == "Spot 1").Count().ToString();
lbl2.Text = mchno.GroupBy(m => m == "Spot 2").Count().ToString();
}
我尝试了很多堆栈溢出的例子,但我的标签总是显示两个。
【问题讨论】:
-
将组更改为
var num = mchno.GroupBy(n => n);然后更改lbl1.Text = num .Count(m => m == "Spot 1").ToString();和lbl2相同,因为您的查询只返回一列。 -
嘿伙计,我得到了这个错误,虽然 operator == 不能应用于 'igrouping
' 和 string 类型的操作数 -
在第一个 GroupBy() 之后(您只需要一个,如上面的注释所示),您可以例如转换为 Dictionary:
var dict = num.ToDictionary(g => g.Key, g => g.Count());,这样您就可以测试特定的键:if (dict.TryGetValue("Spot 1", out int value)) { lbl1.Text = value.ToString(); } -
Omg jimi 和 user1672994 非常感谢,我如何喜欢反馈??
-
@JonathanJames 如果您想在评论中亲自/直接与某人联系,只需在姓名前添加一个 @,就像我对您所做的那样。我们不喜欢这里的贡献,我们支持 :) 但尽管如此,您仍然可以支持具有足够声誉的 cmets。我忘了你需要多少。不过我是为你做的