有什么方法可以结合这个C#代码吗?

时间:2012-05-02 20:44:46

标签: c#

我有以下代码。在我看来,有一种方法可以将它组合成一个声明,但我不知道如何做到这一点。

List<SelectListItem> items = new List<SelectListItem>();

var emptyItem = new SelectListItem(){
    Value = "",
    Text  = "00"
};

items.Add(emptyItem);

ViewBag.AccountIdList = new SelectList(items);

有人可以告诉我是否可以简化这一点。

谢谢,

7 个答案:

答案 0 :(得分:8)

是的,您可以一起使用集合和对象初始值设定项来创建项目,将其添加到列表中,并将列表全部包装在一个语句中。

ViewBag.AccountIdList = new SelectList(
    new List<SelectListItem>
    {
         new SelectListItem
         {
            Value = "",
            Text = "00"
         }
    });

上面的缩进样式是我喜欢用自己的线条上的所有曲线打字的方式,但如果你愿意,你甚至可以单行。

无论哪种方式,它都是一个单一的陈述。

顺便说一下,既然你只是将List<SelectListItem>传递给一个SelectList构造函数,它只需IEnumerable,你就可以传递1的数组而不是列表更多表现:

ViewBag.AccountIdList = new SelectList(
    new []
    {
         new SelectListItem
         {
            Value = "",
            Text = "00"
         }
    });

在这种情况下两者都会有相同的效果,后者效率更高,但两者都很好,这取决于你喜欢的。有关更多信息,我做了一个简短的博客文章,比较了返回single item as an IEnumerable<T> sequence的不同方法。

答案 1 :(得分:2)

ViewBag.AccountIdList = new SelectList(new List<SelectListItem> { new SelectListItem { Value = "", Text = "00"} });

答案 2 :(得分:1)

试试这个:

var items = new List<SelectListItem>()
{
   new SelectListItem { Value = "", Text = "00" }
}

ViewBag.AccountIdList = new SelectList(items);

答案 3 :(得分:0)

这样的东西就是你能得到的最接近的东西。

List<SelectListItem> items = new List<SelectListItem>();
items.Add(new SelectListItem(){
    Value = "",
    Text  = "00"
});
ViewBag.AccountIdList = new SelectList(items);

答案 4 :(得分:0)

可读可测试,IMO ......但你可以写:

items.Add(new SelectedListItem(){
    Value = "",
    Text  = "00"
});  

我不会在一个声明中推荐更多。此语句也可以重构为接受ValueText参数的方法:

// now this is a unit testable method
SelectedListItem CreateSelectedItem (string value, string text) {
   return new SelectedListItem(){
        Value = value,
        Text  = text
    };
}

现在你可以写下以下内容,它在简明扼要的内容中非常清楚:

ViewBag.AccountIdList = new SelectList(items.Add(CreateSelectedItem("someValue", "someText"));

答案 5 :(得分:0)

ViewBag.AccountIdList = new SelectList(List items = new List {new SelectListItem {Value =“”,Text =“00”}});

答案 6 :(得分:0)

ViewBag.AccountIdList = new List<SelectListItem>{new SelectListItem{Value = "", Text  = "00"}};