{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/csharplang/issues/508","repository_url":"https://api.github.com/repos/dotnet/csharplang","labels_url":"https://api.github.com/repos/dotnet/csharplang/issues/508/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/csharplang/issues/508/comments","events_url":"https://api.github.com/repos/dotnet/csharplang/issues/508/events","html_url":"https://github.com/dotnet/csharplang/issues/508","id":225141646,"number":508,"title":"Add new keyword \"leftjoin\" to make LINQ more readable","user":{"login":"uyhung","id":1470309,"avatar_url":"https://avatars3.githubusercontent.com/u/1470309?v=3","gravatar_id":"","url":"https://api.github.com/users/uyhung","html_url":"https://github.com/uyhung","followers_url":"https://api.github.com/users/uyhung/followers","following_url":"https://api.github.com/users/uyhung/following{/other_user}","gists_url":"https://api.github.com/users/uyhung/gists{/gist_id}","starred_url":"https://api.github.com/users/uyhung/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/uyhung/subscriptions","organizations_url":"https://api.github.com/users/uyhung/orgs","repos_url":"https://api.github.com/users/uyhung/repos","events_url":"https://api.github.com/users/uyhung/events{/privacy}","received_events_url":"https://api.github.com/users/uyhung/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2017-04-28T17:15:38Z","updated_at":"2017-04-28T17:33:18Z","closed_at":null,"body":"LINQ is amazing, but only if I don't need to do left / right outer join, the solution to use the DefaultIfEmpty() method looks weird.\r\nI wish if C# could extend it keywords to add \"leftjoin\", \"rightjoin\" so that I can simply code as following:\r\nvar q = from c in db.Categories\r\n            leftjoin p in db.Products on c.CategoryID equals p.CategoryID\r\n            select new \r\n            {\r\n                     p.ProductName, \r\n                     c.CategoryName\r\n            }\r\n   "},"comment":{"url":"https://api.github.com/repos/dotnet/csharplang/issues/comments/298059755","html_url":"https://github.com/dotnet/csharplang/issues/508#issuecomment-298059755","issue_url":"https://api.github.com/repos/dotnet/csharplang/issues/508","id":298059755,"user":{"login":"svick","id":287848,"avatar_url":"https://avatars0.githubusercontent.com/u/287848?v=3","gravatar_id":"","url":"https://api.github.com/users/svick","html_url":"https://github.com/svick","followers_url":"https://api.github.com/users/svick/followers","following_url":"https://api.github.com/users/svick/following{/other_user}","gists_url":"https://api.github.com/users/svick/gists{/gist_id}","starred_url":"https://api.github.com/users/svick/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/svick/subscriptions","organizations_url":"https://api.github.com/users/svick/orgs","repos_url":"https://api.github.com/users/svick/repos","events_url":"https://api.github.com/users/svick/events{/privacy}","received_events_url":"https://api.github.com/users/svick/received_events","type":"User","site_admin":false},"created_at":"2017-04-28T17:33:18Z","updated_at":"2017-04-28T17:33:18Z","body":"This is a duplicate of https://github.com/dotnet/csharplang/issues/361."}}
{"actor":{"display_login":"svick"}}