0

因此,我们正在尝试使用 Linq 语句显示信息,但我们遇到的问题是,如果变量为“”,我们不希望创建某些元素 - 目前我们无法做到这一点,因为我们不能包含 'if ' linq 语句中的语句。我们将如何解决这个问题;我们拥有的代码如下所示。

(例如 - 我们不希望 '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,
                    },
                }
            },
        },
    };
4

3 回答 3

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;
}
于 2013-05-01T10:43:07.153 回答
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,
                },
            }
        },
    },
};
于 2013-05-01T16:14:11.157 回答
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

于 2013-05-01T08:41:14.993 回答