IQueryable items = from rr in _dt.AllItems
where rr.ID == ItemID
select new{rr.Item, rr.SecondItem};
SecondItem返回false或true。是否有可能用不同的字符串值替换(例如On和Off)并添加到项目(IQueryable)?LINQ - 如何更改选择或foreach循环中的值?
IQueryable items = from rr in _dt.AllItems
where rr.ID == ItemID
select new{rr.Item, rr.SecondItem};
SecondItem返回false或true。是否有可能用不同的字符串值替换(例如On和Off)并添加到项目(IQueryable)?LINQ - 如何更改选择或foreach循环中的值?
OK,我发现了。我在我的SQL数据库列中使用了一些类型(true或false)。当我使用LINQ进行选择时,我需要用(“On”或“Off”)值进行替换。 以下的代码符合我的要求
IQueryable items = from rr in _dt.AllItems
where rr.ID == ItemID
select new {
rr.Item,
SecondItem = rr.SecondItem.Value ? "On" : "Off"
};
你的意思是像
var items = from rr in _dt.AllItems
where rr.ID == ItemID
select new
{
rr.Item,
rr.SecondItem == true ? "On" : "Off"
};
你可以做这样的事情:
IQueryable items = from rr in _dt.AllItems
where rr.ID == ItemID
select new {
rr.Item,
SecondItem = rr.SecondItem.HasValue ? "Off" : rr.SecondItem ? "On" : "Off"
};
谢谢你看起来像它的作品。我不确定,因为我意识到我将这个值存储为一个位(0或1),因为它总是返回false(即使它为1或0)。有任何想法吗? – Eugene 2010-04-04 18:33:39
好的,我发现了。它以这种方式工作 - (SecondItem = rr.SecondItem.Value?“On”:“Off”) – Eugene 2010-04-04 19:37:05
@Eugene:小心只做rr.SecondItem.Value。 Nullable
谢谢各位回复。我尝试了两种方法,并且出现错误“无法将类型'System.Nullable'隐式转换为'bool'”?你知道解决问题吗? –
Eugene
2010-04-04 17:57:28
看我的编辑 - 因为SecondItem是空的,你首先必须检查它是否有值(非空),然后使用它。 – 2010-04-04 17:59:34
@Marek Karbarz:您不需要执行HasValue检查,因为Nullable结构会覆盖Equals方法(http://msdn.microsoft.com/zh-cn/library/c7b1e4z6%28v=VS.90%29。 ASPX)。 – R0MANARMY 2010-04-04 18:08:08