Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.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# Visual Studio/C编译器扩展:LinQ“X或Y”_C#_Linq_Visual Studio 2017_Roslyn - Fatal编程技术网

C# Visual Studio/C编译器扩展:LinQ“X或Y”

C# Visual Studio/C编译器扩展:LinQ“X或Y”,c#,linq,visual-studio-2017,roslyn,C#,Linq,Visual Studio 2017,Roslyn,有没有一种方法可以为VS2017或Roslyn编译器或其他任何东西创建某种扩展,从而使这个LinQ查询更加美观 var query = from s in db.TimeSlicedPosts where s.Post == post || s.Post == null where s.Date == day where s.Hour == hour select s; 我希望它看起来像这样: va

有没有一种方法可以为VS2017或Roslyn编译器或其他任何东西创建某种扩展,从而使这个LinQ查询更加美观

var query = from s in db.TimeSlicedPosts
            where s.Post == post || s.Post == null
            where s.Date == day
            where s.Hour == hour
            select s;
我希望它看起来像这样:

var query = from s in db.TimeSlicedPosts
            where either s.Post == post or s.Post == null
            where s.Date == day
            where s.Hour == hour
            select s;
由于两个或多个where子句创建AND条件,我想用一种英语形式的方法来创建or条件,在本例中是X或Y[或Z,…]

有没有可能这样做,使后一个例子被认为是一个完全有效的C代码,无需重新编写和编译Roslyn,而是通过编写某种扩展

如果是,那么我应该从哪里开始挖掘


不,Roslyn不允许您添加插件来更改 你可以用Roslyn来创造你自己的方言,但我强烈反对 建议不要这样做。除此之外,几乎都是专业人士 C开发人员将能够读写您的第一个代码。你会 必须向所有想使用你自己的方言的人解释你自己的方言 你的第二个密码


不,Roslyn不允许您添加插件来更改C的语法。您可以使用Roslyn来创建自己的方言,但我强烈建议您不要这样做。除此之外,几乎所有的专业C开发人员都能够阅读和编写您的第一段代码。您必须向所有想使用第二个代码的人解释您自己的自定义方言。您可以创建一组流畅的扩展方法,使其看起来像Wherep=>p.post.或…其中…您可以切换到扩展方法语法,只需编写一个自定义方法,返回bool:var query=db.TimeSlicedPosts.Wherex=>SomeCustomMethodx;这会更干净,但是这是基于观点的,并且仍然不会让其他人感到困惑@我需要一个答案来接受我的不接受率为零。写一个,我会删除我自己的。