我使用下面的LINQ查詢使用XML文件來工作..使用如果LINQ查詢else語句
XElement rootElement = XElement.Load(@"test.xml");
int StyCode;
var lv1s = from lv1 in rootElement.Descendants("Class")
where lv1.Attribute("Code").Value.Equals("002")
select new
{
Children = from ltd in lv1.Descendants("Subject")
where ltd.Attribute("Course").Value.Equals("Math")
select new
{
****//In This below section need result on condition based... ****
if(StyCode=0)
{
Children1 = ltd.Attribute("AllTeachers").Value.Equals("Y") ? true : false
}
else
{
Children2 = ltd.Attribute("SpeciaGuest").Value.Equals("Y") ? true : ltd.Elements("Topic").Attributes("Code").Where(x => x.Value.Equals("1")).FirstOrDefault() != null ? true : false
}
}
};
下面是我的XML結構..
<?xml version="1.0" encoding="utf-8" ?>
<Document>
<Class Code="001">
<Subject Course="Math" AllTeachers='N' SpeciaGuest='N'></Subject>
<Subject Course="Engish" AllTeachers='Y' SpeciaGuest='Y'></Subject>
<Subject Course="History" AllTeachers='Y' SpeciaGuest='Y'></Subject>
</Class>
<Class Code="002">
<Subject Course="Math" AllTeachers='Y' SpeciaGuest='N'>
<Topic Code="1">LAW1</Topic>
<Topic Code="2">
LAW2
</Topic>
<Topic Code="3">
LAW3</Topic>
</Subject>
<Subject Course="Engish" AllTeachers='Y' SpeciaGuest='Y'></Subject>
<Subject Course="History" AllTeachers='Y' SpeciaGuest='Y'></Subject>
</Class>
</Document>
請讓我知道,怎麼樣我可以使用條件來選擇多個選擇結果。還讓我知道在這個linq查詢中使用resharper會好嗎?
兩者不具有相同的類型。一個是「字符串」,另一個是「布爾」。他們需要有相同的類型才能工作。他們也應該真實地擁有相同的名字,否則你永遠無法使用他們中的任何一個。 – Servy
@Servy:修改代碼.. – intelliWork
你只解決了我提到的兩個問題之一。還要注意,你的if不是基於該項目,而是基於查詢範圍之外的值,所以只需在查詢之外拉出if即可。 – Servy