C# 返回重复数据而不是多个数据集的Linq列表

C# 返回重复数据而不是多个数据集的Linq列表,c#,.net,list,linq,C#,.net,List,Linq,我有一些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(); 条形码列表返回12个唯一的条形码。

我有一些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();
条形码列表返回12个唯一的条形码。 然而,info正在返回与第一条形码12x相关联的数据


我在这方面哪里出错了?

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

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

实体模型是从VisualFoxPro表格中提取出来的,这可能是由于技术陈旧,带来了一些怪癖。我刚刚删除了模型中的引用表并重新实现了它们,经过一些修改后,我的代码正常工作。

您的代码看起来可以正常工作。您确定表1中的条形码与表2中的条形码匹配吗?确保条形码后面没有隐藏字符。例如:如果从Excel复制数据,有时还会复制新的换行符。@RikMaton我添加了一个。请修剪条形码以确保正确。仍在发生。两个表中的条形码都匹配。您是否尝试过在SQL中运行类似的查询,以查看结果如何?从表2中选择条形码,其中从表1中选择条形码,其中register=1使用与您在示例中使用的相同的寄存器。var barcodeList=context.table1.Wherez=>z.register==registerNo.GroupByz=>z.barcode.Selectx=>x.First.ToList@那么条形码列表有问题吗?你能解释一下吗?