Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ高级查询3级_C#_Linq - Fatal编程技术网

C# LINQ高级查询3级

C# LINQ高级查询3级,c#,linq,C#,Linq,这是我的目标: 控制台:Playstation Type : PSX Price : 100 AvailableIn : [ "USA", "JAPAN" ] Type : PS3 Price : 250 AvailableIn : [] Type : PS4 Price : 500 AvailableIn : [ "USA", "JAPAN" ] Type : PSX Price : 100 Avai

这是我的目标:

控制台:Playstation

Type : PSX
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]
Type : PS3
    Price : 250
    AvailableIn : []        
Type : PS4      
    Price : 500
    AvailableIn : [ "USA", "JAPAN" ]
Type : PSX
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]
Type : PS4      
    Price : 500
    AvailableIn : [ "USA", "JAPAN" ]
主机:XBOX

Type : XBOX 360
    Price : 100
    AvailableIn : []
Type : XBOX One
    Price : 250
    AvailableIn : [ "USA", "JAPAN" ]
Type : XBOX One
    Price : 250
    AvailableIn : [ "USA", "JAPAN" ]
游戏机:游戏机

Type : GBC
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]
Type : GBA
    Price : 250
    AvailableIn : []
Type : GBC
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]


大家好, 如果“AvailableIn”不为空,我需要一个LINQ查询来选择所有可用的控制台 以下是我的预期结果:

控制台:Playstation

Type : PSX
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]
Type : PS3
    Price : 250
    AvailableIn : []        
Type : PS4      
    Price : 500
    AvailableIn : [ "USA", "JAPAN" ]
Type : PSX
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]
Type : PS4      
    Price : 500
    AvailableIn : [ "USA", "JAPAN" ]
主机:XBOX

Type : XBOX 360
    Price : 100
    AvailableIn : []
Type : XBOX One
    Price : 250
    AvailableIn : [ "USA", "JAPAN" ]
Type : XBOX One
    Price : 250
    AvailableIn : [ "USA", "JAPAN" ]
游戏机:游戏机

Type : GBC
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]
Type : GBA
    Price : 250
    AvailableIn : []
Type : GBC
    Price : 100
    AvailableIn : [ "USA", "JAPAN" ]
谢谢

我确实试过了

var models = Consoles
    .Where(c => c.Types.Any(t => t.AvailableIn.Count() != 0))
但这对我不起作用。

这应该行得通

var models = Consoles.Where(x=>x.Types.Any(t=>t.AvailableIn.Any()));
如果“AvailableIn”不为空

null
与0不同,可能需要:

var models = Consoles
    .Where(c => c.Types.Any(t => t.AvailableIn != null && t.AvailableIn.Any()));
对其他答案的评论:

我仍然得到类型:XBOX 360价格:100可用:[]和 类型:GBA价格:250可用in:[]仍在结果中,I 如果可用性=
null

我猜,如果任何控制台类型不可用,您希望排除所有控制台,对吗

然后
所有的
都应该工作:

var models = Consoles
    .Where(c => c.Types.All(t => t.AvailableIn != null && t.AvailableIn.Any()));
如果您只想排除不可用的所有控制台的类型,则需要创建不包含以下类型的
控制台的新实例:

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 ....
    });

“LINQ高级查询3级”这是什么??考虑到标题是用在谷歌找到你的问题,这听起来像一个问题,这将有助于许多人?感谢您的快速答复@ JYPARTASK,与此LINQ查询,XBOX360和GBA仍然出现的结果。我想摆脱如果他们,如果他们不可用