C# Visual Studio/C编译器扩展:LinQ“X或Y”
有没有一种方法可以为VS2017或Roslyn编译器或其他任何东西创建某种扩展,从而使这个LinQ查询更加美观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
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;这会更干净,但是这是基于观点的,并且仍然不会让其他人感到困惑@我需要一个答案来接受我的不接受率为零。写一个,我会删除我自己的。