2010-11-17 44 views
1

我有一個強類型DataSet,這類型數據集有一些字段:ID,代碼,屏幕,NL,FR ..LINQ的返回場或其他

我做的LINQ查詢就可以了,OK。

但我會根據不同的語言回報,如:編號,代碼和NL或ID碼和FR

我想是這樣的(見下文,但無法正常工作)。

var res = 
from p in dataTable.AsEnumerable() 
where p.Screen.ToUpper() == "WWWWWW" && p.Control.ToUpper() == "OOOO" 
select new {p.Id, p.Code, if(lg == "FR") ?? p.FR : p.NL }; 

感謝,

回答

5

好了,你可以使用條件運算符,如果兩個類型相同:

var res = from p in dataTable.AsEnumerable() 
      where p.Screen.ToUpper() == "WWWWWW" && p.Control.ToUpper() == "OOOO" 
      select new {p.Id, p.Code, Foo = lg == "FR" ? p.FR : p.NL }; 

注意,你怎麼也來命名的屬性,否則C#編譯器無法猜測你想要什麼。

2

如果編譯器無法猜測匿名類的屬性,則必須命名它。

select new {p.Id, p.Code, Language = lg == "FR" ? p.FR : p.NL }; 

應該工作。