2010-04-04 77 views

回答

1

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" 
       }; 
1

你的意思是像

var items = from rr in _dt.AllItems 
       where rr.ID == ItemID 
       select new 
       { 
        rr.Item, 
        rr.SecondItem == true ? "On" : "Off" 
       }; 
+0

谢谢各位回复。我尝试了两种方法,并且出现错误“无法将类型'System.Nullable '隐式转换为'bool'”?你知道解决问题吗? – Eugene 2010-04-04 17:57:28

+0

看我的编辑 - 因为SecondItem是空的,你首先必须检查它是否有值(非空),然后使用它。 – 2010-04-04 17:59:34

+0

@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

2

你可以做这样的事情:

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

谢谢你看起来像它的作品。我不确定,因为我意识到我将这个值存储为一个位(0或1),因为它总是返回false(即使它为1或0)。有任何想法吗? – Eugene 2010-04-04 18:33:39

+0

好的,我发现了。它以这种方式工作 - (SecondItem = rr.SecondItem.Value?“On”:“Off”) – Eugene 2010-04-04 19:37:05

+0

@Eugene:小心只做rr.SecondItem.Value。 Nullable 结构背后的整个想法是,可能没有值(对于您的情况极不可能,因为您从位域获取数据)。 – R0MANARMY 2010-04-05 00:27:44