我有两个数据结构的数据,我想加入日期。每个数据结构包含88个值,并且一个结构中的每个日期在另一个结构中具有相应的日期。但是,当我尝试连接它们时,具有连接结果的列表包含90个值。换句话说,结果包含两个额外的值。当我检查连接列表中的值时,它似乎在列表的开头包含两个额外的值,这些值与第一个"预期的"相同。加入了价值。 什么想法可能是错的? 这是我正在使用的连接表达式:
//Joins vib and RPM with respect to date
var joinedVibRPM = serie.Value.Values.Join(
RPMSeriesOne.Values,
_vib => _vib.DateTime,
_rpm => _rpm.DateTime,
(_vib, _rpm) => new { vib = _vib.Value, rpm = _rpm.Value }).ToList();
答案 0 :(得分:2)
如果在任一结构中有任何重复日期,则一个结构中的一个元素将匹配另一个结构中的2个(或更多)元素。这将为您提供超过88个结果。
检查您的结构是否有不同的值:
RPMSeriesOne.Values.Distinct().Count();
和
C:\temp\My\My_Ant.xml:20: Execute failed: java.io.IOException: Cannot run program "C:\PROGRA~1\Java\jre7\bin\java.exe -jar C:\temp\My\javatest.jar" (in directory "C:\temp\My"): CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1047)
at java.lang.Runtime.exec(Runtime.java:617)
at org.apache.tools.ant.taskdefs.launcher.Java13CommandLauncher.exec(Java13CommandLauncher.java:58)
at org.apache.tools.ant.taskdefs.Execute.launch(Execute.java:426)
at org.apache.tools.ant.taskdefs.Execute.execute(Execute.java:440)
at org.apache.tools.ant.taskdefs.ExecTask.runExecute(ExecTask.java:629)
at org.apache.tools.ant.taskdefs.ExecTask.runExec(ExecTask.java:670)
at org.apache.tools.ant.taskdefs.ExecTask.execute(ExecTask.java:496)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:293)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:435)
at org.apache.tools.ant.Target.performTasks(Target.java:456)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1405)
at org.apache.tools.ant.Project.executeTarget(Project.java:1376)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1260)
at org.apache.tools.ant.Main.runBuild(Main.java:854)
at org.apache.tools.ant.Main.startAnt(Main.java:236)
at org.apache.tools.ant.launch.Launcher.run(Launcher.java:285)
at org.apache.tools.ant.launch.Launcher.main(Launcher.java:112)
其中一个结果可能小于88,表明存在重复。
答案 1 :(得分:2)
您可以在输入集具有重复条目时解释结果。例如,考虑这两个列表的连接,每个列表包含四个项目(使用字符串,而不是var items1 = new { "A", "B", "C", "C" };
var items2 = new { "A", "B", "B", "C" };
以获得更好的可读性):
var joinedItems =
from item1 in items1
join item2 in items2 on item1 equals item2
select item1 + item2;
如果您执行此加入:
{ "AA", "BB", "BB", "CC", "CC" }
您的结果将是:
"BB"
你会发现"CC"
两次,因为它在secod列表和{{1}}中重复两次,因为它在第一个列表中重复。总共你会得到 5 项目。