c# - 如何在 foreach 循环中使用两个变量?

标签 c# linq foreach

我正在使用 dotConnect linq to sqlite。我想要做的是在 foreach 循环中使用两个变量。已关注this代码,但它不工作。这是我的代码片段。

    bool check_units(int id)
    {
        MainDataContext medic = new MainDataContext();
        bool check = false;
        var medic_query = from m in medic.Medicines
                          orderby m.Id
                          where m.Id == id
                          select m;

        var invo_query = from inv in medic.Invoices
                         orderby inv.Id
                         where inv.Id == id
                         select inv;

        var med_inv = medic_query.Zip(invo_query, (m, i) => new { Medicine = m, Invoice = i });

        foreach(var mi in med_inv)
        {
            if (mi.Medicine.UNIT > mi.Invoice.UNIT)
            {
                mi.Medicine.UNIT -= mi.Invoice.UNIT;
                if (mi.Medicine.UNIT < 10)
                {
                    MessageBox.Show(mi.Medicine.Name + " is short in Invertory!\nUnits Remaining: " + mi.Medicine.UNIT,
                        "Inventory Empty", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                chk = true;
            }
            else
            {
                MessageBox.Show("Not Enough Stock!\nUnits Remaining: " + mi.Medicine.UNIT,
                    "Inventory Short", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        medic.SubmitChanges();
        return chk;
    }

我面临的问题是我的代码出错

The query operator 'Zip' is not supported.

没有任何语法错误或警告。 我认为 Zip 运算符不能与 linqtosql 类型的查询一起使用!

等待支持! 谢谢:)

最佳答案

问题是底层查询提供程序无法将 Zip 方法转换为原始 SQL。由于您没有应用任何额外的过滤器,最简单的方法是使用 AsEnumerable 来组合查询:

    var med_inv = medic_query.AsEnumerable()
                             .Zip(invo_query, (m, i) => new { Medicine = m, Invoice = i });

您确定每个查询的记录都正确排列了吗?这看起来应该是一个 Join,但由于您没有指定记录是否相关/如何相关,我们无法判断正确的连接是什么。

关于c# - 如何在 foreach 循环中使用两个变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258564/

相关文章:

c# - 在asp.net中创建一个基本类

c# - TCP Socket.Connect 正在生成误报

c# - LINQ 查询 XML 文件以获取子标签

c# - 如何通过 Regex.Split() 在 LINQ 查询中创建一个 string[]

c# - 从列表中排除一个项目(按索引),并采取所有其他

c# - 何时使用 FOR-CASE(C# 中的 Foreach/switch)?

C# WPF D3(动态数据显示)图表项目

C#:如何在 F# 中实现为 "async"和 "!"?

c# - 摆脱多重循环?

c# - ImageMagick.NET - 更快的性能