【问题标题】:Linq List returning duplicate data instead of multiple datasetsLinq List 返回重复数据而不是多个数据集
【发布时间】:2021-04-19 10:14:11
【问题描述】:

我有一些 linq 可以返回条形码列表:

var barcodeList = context.table1.Where(z => z.register == registerNo).Select(z => z.barcode).ToList();

然后我尝试检索与每个条形码相关的数据:

var info = context.table2.Where(z => barcodeList.Contains(z.barcode)).ToList();

barcodeList 正在返回 12 个唯一的条形码。 但是,info 正在返回与第一个条码 12 倍相关联的数据。

我哪里错了?

【问题讨论】:

  • 您的代码看起来可以运行。您确定表 1 中的条形码与表 2 中的条形码匹配吗?确保条形码后面没有隐藏字符。例如:如果你从 Excel 中复制数据,有时你也会复制新的换行符。
  • @RikMaton 我添加了一个 .Trim 条形码以确保。还在发生。并且两个表中的条形码都匹配。
  • 您是否尝试过在 SQL 中运行类似的查询,看看结果如何? select barcode from table2 where barcode in (select barcode from table1 where register = 1) 使用与示例中相同的寄存器。
  • varbarcodeList = context.table1.Where(z => z.register == registerNo).GroupBy(z => z.barcode).Select(x => x.First())。 ToList();
  • @jdweng 那么条形码列表有问题吗?能解释一下吗?

标签: c# .net list linq


【解决方案1】:

我不确定为什么您的查询不能正常工作,但您所做的看起来像是一个联接:

var query = from barcode in context.Table1
            join info in context.Table2 on barcode.barcode equals info.barcode
            where barcode.register == registerNo
            select info;

【讨论】:

    【解决方案2】:

    实体模型是从视觉 foxpro 表中提取的,这可能是由于技术陈旧,带来了一些怪癖。我刚刚删除了模型中引用的表并重新实现了它们,我的代码工作了(经过一些更改)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-24
      • 2015-04-10
      相关资源
      最近更新 更多