我试图寻找和收集所有满足这些要求的元素:使用此foreach循环这个LINQ语句是否正确使用?
var checkTest = from d in document.Descendants("Prerequisite")
where d.Value != "none"
select d.Parent.Element("Name").Value;
:
foreach (var item in prerequisite)
{
if (item == checkTest.ToString())
{
MessageBox.Show("this module has a prereq" + item);
}
}
,但它不会因某种原因做任何事,任何人知道为什么?我认为这个问题是在var checkTest
(这是前提条件在foreach :)
var prerequisite = from d in document.Descendants("Name")
where d.Value == (String)listBox2.SelectedItem
select d.Parent.Element("Prerequisite").Value;
这里指的是XML:
<?xml version="1.0" encoding="utf-8" ?>
<SoftwareEngineering>
<Module>
<Name>Algorithms and Data Structures</Name>
<Code>3SFE504</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>3D Graphics I</Name>
<Code>3SFE508</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Event-Driven Programming</Name>
<Code>3SFE513</Code>
<Capacity>10</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Object Oriented Design</Name>
<Code>3SFE514</Code>
<Capacity>10</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Requirements Engineering</Name>
<Code>3SFE516</Code>
<Capacity>10</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Introduction to AI</Name>
<Code>3SFE599</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Java Mobile Application Development</Name>
<Code>3SFE540</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>3SFE514(corequisite)</Prerequisite>
</Module>
<Module>
<Name>C# .NET Programming</Name>
<Code>3SFE541</Code>
<Capacity>5</Capacity>
<Semester>1</Semester>
<Prerequisite>3SFE514(corequisite)</Prerequisite>
</Module>
<Module>
<Name>Software Engineering Group Project</Name>
<Code>3SFE515</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE514(corequisite)</Prerequisite>
</Module>
<Module>
<Name>Software Engineering</Name>
<Code>3SFE519</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Mobile User Interface Development</Name>
<Code>3SFE542</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE540</Prerequisite>
</Module>
<Module>
<Name>Interactive Multimedia</Name>
<Code>3MTS954</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Concurrent Programming</Name>
<Code>3SFE555</Code>
<Capacity>5</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Mobile Gaming</Name>
<Code>3SFE557</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>none</Prerequisite>
</Module>
<Module>
<Name>Intelligent Systems</Name>
<Code>3SFE500</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE599</Prerequisite>
</Module>
<Module>
<Name>3D Graphics II</Name>
<Code>3SFE501</Code>
<Capacity>10</Capacity>
<Semester>2</Semester>
<Prerequisite>3SFE508</Prerequisite>
</Module>
</SoftwareEngineering>
是否与我的选择做一个兄弟姐妹在寻找最低的兄弟姐妹时?即我先搜索先决条件,然后说要选择其Name.Value(在checkTest
)
即使我尝试使if语句为!=,它将打印每个前提条件,即使它没有!
嗨,再次psubsee,我试过但仍然没有得到任何东西,有趣的是,没有东西弹出:@ – a7omiton 2012-04-01 10:34:47
@ AZ1你看了'prerequisite'和'checkTest'的内容没有查询,看看每个内容是什么?你确定你有一场比赛吗? – psubsee2003 2012-04-01 10:36:52
@ AZ1你想完成什么?它看起来像你试图从你的XML获得一个特定的先决条件,用于匹配用户在列表框中选择的名称的课程?回顾你昨天的一些问题,看起来这可能是你以前的一些问题的后续 - 你是否仍然有一个'Module'类和一个'modules'集合?如果是这样,你为什么不使用它? – psubsee2003 2012-04-01 10:42:49