好,最簡單的方法是一個顯式的if/else:
string value;
string controlType = (string) element.Attribute("CONTROL-TYPE");
if (controlType == "Button")
{
value = (string) element.Attribute("LINK");
}
else if (controlType == "Dropdown")
{
value = (string) element.Attribute("METHOD");
}
else
{
// What do you want to happen if it's neither of these?
}
...或使用條件運算符,如果你很高興與其他控制類型的一個簡單的默認值:
string controlType = (string) element.Attribute("CONTROL-TYPE");
string value = controlType == "Button" ? (string) element.Attribute("LINK")
: controlType == "Dropdown" ? (string) element.Attribute("METHOD")
: "default value";
編輯:在查詢表達式中,有兩種合理的方法來做到這一點。首先,你可以使用條件運算符和let
條款來獲取控制類型只有一次:或者
var query =
from element in elements
let controlType = (string) element.Attribute("CONTROL-TYPE")
select new {
ID = (string) element.Attribute("ID"),
XYZ = controlType == "Button" ? (string) element.Attribute("LINK")
: controlType == "Dropdown" ? (string) element.Attribute("METHOD")
: "default value"
};
- 和preferrably,IMO - 把這個邏輯到方法,然後從SELECT子句調用該方法:
var query =
from element in elements
let controlType = (string) element.Attribute("CONTROL-TYPE")
select new {
ID = (string) element.Attribute("ID"),
XYZ = GetXyz(element);
};
...
private static void GetXyz(XElement element)
{
...
}
wo..wo ..這是我必須在Linq選擇寫?我認爲這是不支持聲明變量像字符串你在這裏做...請告訴我,我應該在哪裏寫這個邏輯? 讓說我AVE選擇爲: //代碼從模仿....東西從這裏開始... .. 選擇 新 { ID = mimic.Attribute( 「ID」), NAME =模仿.Attribute(「NAME」), CONTROLTYPE = mimic.Attribute(「CONTROL-TYPE」), //我想在這裏寫邏輯.....對於你的代碼的價值 – 2010-08-12 06:44:32
@Lalit:這會有幫助如果你事先給出了上下文......將被編輯。 – 2010-08-12 07:01:11
編輯的第一個代碼對我來說運行良好..... – 2010-08-12 09:14:59