Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 首次在c上使用lambda函数_C#_Sql_Winforms_Lambda - Fatal编程技术网

C# 首次在c上使用lambda函数

C# 首次在c上使用lambda函数,c#,sql,winforms,lambda,C#,Sql,Winforms,Lambda,大家好,这是我第一次问关于堆栈溢出的问题,所以我将尽可能描述。我一直在想lambda函数,我认为现在是使用该函数的适当时机 我有一个sql表,其中有一列machineNo,另一列count作为是或否的标志,不管它是否已计数 我的目标是基于sql中的machineNo列对列进行分组。我已经从sql返回了列表,没有问题 我有 现场2 现场1 现场1 现场1 现场1 它应该显示 lbl1.Text=4 lbl2.Text=1 public void listlambda() {

大家好,这是我第一次问关于堆栈溢出的问题,所以我将尽可能描述。我一直在想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();
    }
我已经尝试了很多堆栈溢出的例子,但我的标签总是显示两个。

您不能在iGroup上应用==。您需要将groupBy更改为

 var num = mchno.GroupBy(n => n);
稍后,文本框指定为

lbl1.Text = num .Count(m => m == "Spot 1").ToString();
lbl2.Text = num .Count(m => m == "Spot 2").ToString();

将group by更改为var num=mchno.GroupByn=>n;然后将lbl1.Text=num.Countm=>m==Spot 1.ToString;对于lbl2也是一样,因为您的查询只返回一列。嘿,伙计,虽然运算符==不能应用于“igrouping”和stringby类型的操作数,但我得到了这个错误。在第一个GroupBy之后,您只需要一个,如上面的注释所示,您可以转换为Dictionary:var dict=num.ToDictionaryg=>g.Key,g=>g.Count;,因此,您可以测试特定的键:如果dict.TryGetValueSpot 1,out int value{lbl1.Text=value.ToString;}Omg jimi和user1672994非常感谢,我喜欢反馈吗???@JonathanJames如果您想亲自/直接在您的评论中称呼某人,只需在名字前面加一个@,就像我和您一起做的那样。我们不喜欢这里的投稿,我们会提高投票率:但无论如何,你将能够以足够的声誉提高评论的投票率。我忘了你需要多少。但我这样做是为了你,因为这里m是一个I组:你可以使用如下内容:num.Singlem=>m.Key==Spot 1.Count.ToString;只有一种可能的方法:num.FirstOrDefaultm=>m.Key==Spot 1?.Count.ToString;这样更好。