所以,我们试图使用Linq语句显示信息,但我们遇到的问题是,如果变量为“”,我们不希望创建一些元素 - 目前我们无法执行此操作,因为我们无法包含linq语句中的'if'语句。我们如何解决这个问题;我们的代码如下所示。
(例如 - 我们不希望'x.Phone'元素显示是否设置为“”)
Root = new RootElement ("Student Guide") {
new Section("Contacts"){
from x in AppDelegate.getControl.splitCategories("Contacts")
select (Element)new RootElement(x.Title) {
new Section(x.Title){
(Element)new StyledStringElement("Contact Number",x.Phone) {
BackgroundColor=UIColor.FromRGB(71,165,209),
TextColor=UIColor.White,
DetailColor=UIColor.White,
},
}
},
},
};
答案 0 :(得分:3)
您可以使用以下内容:
var root = new RootElement ("Student Guide") {
new Section("Contacts"){
from x in AppDelegate.getControl.splitCategories("Contacts")
let hasPhone = x.Phone == null
select hasPhone
? (Element)new RootElement(x.Title) {
new Section(x.Title){
(Element)new StyledStringElement("Contact Number",x.Phone) {
BackgroundColor=UIColor.FromRGB(71,165,209),
TextColor=UIColor.White,
DetailColor=UIColor.White,
},
}
}
: (Element)new RootElement(x.Title)
},
};
或者你可以打破你的Linq以使用一种方法 - 然后它将减少代码的复制和粘贴 - 例如。
var root = new RootElement ("Student Guide") {
new Section("Contacts"){
from x in AppDelegate.getControl.splitCategories("Contacts")
select Generate(x)
},
};
与
private Element Generate(Thing x)
{
var root = new RootElement(x.Title);
var section = new Section(x.Title);
root.Add(section);
if (x.Phone != null)
section.Add(new StyledStringElement("Contact Number",x.Phone) {
BackgroundColor=UIColor.FromRGB(71,165,209),
TextColor=UIColor.White,
DetailColor=UIColor.White,
});
return root;
}
答案 1 :(得分:1)
也许我在这里遗漏了一些东西,但是AFAIK,你只是错过了一个where
条款,不是吗?
var root = new RootElement ("Student Guide") {
new Section("Contacts"){
from x in AppDelegate.getControl.splitCategories("Contacts")
where !string.IsNullOrEmpty(x.Phone)
select (Element)new RootElement(x.Title) {
new Section(x.Title){
(Element)new StyledStringElement("Contact Number",x.Phone) {
BackgroundColor=UIColor.FromRGB(71,165,209),
TextColor=UIColor.White,
DetailColor=UIColor.White,
},
}
},
},
};
答案 2 :(得分:0)
可能使用条件运算符?
string.IsNullOrEmpty(x.Phone) ? "Return Something if it is empty" : x.Phone;
http://msdn.microsoft.com/en-us/library/ty67wk28(v=vs.80).aspx