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