这是我的对象:
控制台:Playstation
Type : PSX
Price : 100
AvailableIn : [ "USA", "JAPAN" ]
Type : PS3
Price : 250
AvailableIn : []
Type : PS4
Price : 500
AvailableIn : [ "USA", "JAPAN" ]
控制台:XBOX
Type : XBOX 360
Price : 100
AvailableIn : []
Type : XBOX One
Price : 250
AvailableIn : [ "USA", "JAPAN" ]
控制台:GameBoy
Type : GBC
Price : 100
AvailableIn : [ "USA", "JAPAN" ]
Type : GBA
Price : 250
AvailableIn : []
嗨,大家好, 我需要一个LINQ查询来选择所有可用的控制台,如果" AvailableIn"不是空的 这是我预期的结果:
控制台:Playstation
Type : PSX
Price : 100
AvailableIn : [ "USA", "JAPAN" ]
Type : PS4
Price : 500
AvailableIn : [ "USA", "JAPAN" ]
控制台:XBOX
Type : XBOX One
Price : 250
AvailableIn : [ "USA", "JAPAN" ]
控制台:GameBoy
Type : GBC
Price : 100
AvailableIn : [ "USA", "JAPAN" ]
谢谢,
我确实尝试了
var models = Consoles
.Where(c => c.Types.Any(t => t.AvailableIn.Count() != 0))
但它对我不起作用。
答案 0 :(得分:0)
这应该有用。
var models = Consoles.Where(x=>x.Types.Any(t=>t.AvailableIn.Any()));
答案 1 :(得分:0)
如果“AvailableIn”不为空
null
与0不同,也许你想要:
var models = Consoles
.Where(c => c.Types.Any(t => t.AvailableIn != null && t.AvailableIn.Any()));
评论其他答案:
我仍然得到Type:XBOX 360价格:100 AvailableIn:[]和 类型:GBA价格:250 AvailableIn:[]仍在结果中,我 如果可用性=
,我们想要摆脱这些类型null
我想你想要排除所有控制台,如果它的任何类型都不可用,那是正确的吗?
然后All
应该有效:
var models = Consoles
.Where(c => c.Types.All(t => t.AvailableIn != null && t.AvailableIn.Any()));
如果您只想排除所有不可用的控制台类型,则需要创建没有这些类型的Console
的新实例:
var models = Consoles
.Where(c => c.Types.Any(t => t.AvailableIn != null && t.AvailableIn.Any()))
.Select(c => new Console
{
AvailableIn = c.Types
.Where(t => t.AvailableIn != null && t.AvailableIn.Any()),
OtherProperties ....
});