限制来自 linq 结果 .NET 的结果
Limit results from linq results .NET
我正在使用 linq 从枚举列表中获取结果列表。现在我正在 return 查看完整列表。
正在执行以下操作:
ViewData["listDT"] = from c in Enum.GetValues(typeof(ColumnDataType)).Cast<ColumnDataType>().ToList()
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
我的 ColumnDateType 枚举在哪里:
public enum ColumnDataType
{
String,
Date,
DateTime,
Integer,
Decimal,
MultipleChoice,
PictureBox,
Attachment,
Boolean,
AutoNumber
}
我的问题是如何使用当前的 Linq 语句只 return String、DateTime、Decimal 和 Integer。
您可以使用 where
子句来过滤您的结果:
ViewData["listDT"] = from c in Enum.GetValues(typeof(ColumnDataType)).Cast<ColumnDataType>().ToList()
where c == ColumnDataType.String
|| c == ColumnDataType.DateTime
|| c == ColumnDataType.Decimal
|| c == ColumnDataType.Integer
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
如果您已经知道所需的值列表,只需将其用作来源即可:
from c in new [] {ColumnDataType.String, ColumnDataType.DateTime, ColumnDataType.Decimal, ColumnDataType.Integer}
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
如果您只需要那些指定的值,请尝试这样的操作:
ViewData["listDT"] = from c in new[]
{
ColumnDataType.String,
ColumnDataType.DateTime,
ColumnDataType.Decimal,
ColumnDataType.Integer
}
select new SelectListItem
{
Value = c.ToString(),
Text = c.ToString()
};
可以肯定的是,有更简洁的方法可以做到这一点,但一种简单的方法是添加一个 where 子句。
from c in Enum.GetValues(typeof(ColumnDataType)).Cast<ColumnDataType>().ToList()
where c == ColumnDataType.String
|| c == ColumnDataType.DateTime
|| c == ColumnDataType.Decimal
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
需要考虑的一件事:如果您知道要添加的值,为什么不这样做:
var availableValues = new List<SelectListItem> {
new SelectListItem {Value = ColumnDataType.String.ToString()},
new SelectListItem {Value = ColumnDataType.DateTime.ToString()}
new SelectListItem {Value = ColumnDataType.Decimal.ToString()}
}
我正在使用 linq 从枚举列表中获取结果列表。现在我正在 return 查看完整列表。
正在执行以下操作:
ViewData["listDT"] = from c in Enum.GetValues(typeof(ColumnDataType)).Cast<ColumnDataType>().ToList()
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
我的 ColumnDateType 枚举在哪里:
public enum ColumnDataType
{
String,
Date,
DateTime,
Integer,
Decimal,
MultipleChoice,
PictureBox,
Attachment,
Boolean,
AutoNumber
}
我的问题是如何使用当前的 Linq 语句只 return String、DateTime、Decimal 和 Integer。
您可以使用 where
子句来过滤您的结果:
ViewData["listDT"] = from c in Enum.GetValues(typeof(ColumnDataType)).Cast<ColumnDataType>().ToList()
where c == ColumnDataType.String
|| c == ColumnDataType.DateTime
|| c == ColumnDataType.Decimal
|| c == ColumnDataType.Integer
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
如果您已经知道所需的值列表,只需将其用作来源即可:
from c in new [] {ColumnDataType.String, ColumnDataType.DateTime, ColumnDataType.Decimal, ColumnDataType.Integer}
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
如果您只需要那些指定的值,请尝试这样的操作:
ViewData["listDT"] = from c in new[]
{
ColumnDataType.String,
ColumnDataType.DateTime,
ColumnDataType.Decimal,
ColumnDataType.Integer
}
select new SelectListItem
{
Value = c.ToString(),
Text = c.ToString()
};
可以肯定的是,有更简洁的方法可以做到这一点,但一种简单的方法是添加一个 where 子句。
from c in Enum.GetValues(typeof(ColumnDataType)).Cast<ColumnDataType>().ToList()
where c == ColumnDataType.String
|| c == ColumnDataType.DateTime
|| c == ColumnDataType.Decimal
select new SelectListItem { Value = c.ToString(), Text = c.ToString() };
需要考虑的一件事:如果您知道要添加的值,为什么不这样做:
var availableValues = new List<SelectListItem> {
new SelectListItem {Value = ColumnDataType.String.ToString()},
new SelectListItem {Value = ColumnDataType.DateTime.ToString()}
new SelectListItem {Value = ColumnDataType.Decimal.ToString()}
}