{"slug": "linq", "name": "LINQ", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 5, "commenters": 6, "warners": 0, "score": 4.531, "rising": -1.64, "first": "2025-12-22", "latest": "2026-06-23", "why": "you can construct queries with a query builder API like C#'s LINQ", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 5, "neutral": 0, "compare": 1, "warn": 0}, "spark": [0, 1, 0, 1, 1, 0, 1, 1, 0, 0, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "you can construct queries with a query builder API like C#'s LINQ", "kind": "", "icon": false, "domain": null, "github_repo": null, "official_url": "https://learn.microsoft.com/en-us/dotnet/csharp/linq/", "pricing": "", "aliases": ["LINQ"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 778436864, "item_id": 48652304, "url": "https://news.ycombinator.com/item?id=48652304", "by": "fabianlindfors", "date": "2026-06-23", "stance": "recommend", "quote": "Microsoft has been doing this for a long time", "excerpt": "Microsoft has been doing this for a long time: https://learn.microsoft.com/en-us/dotnet/csharp/linq/", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Bun-sqlgen \u2013 Type-safe raw SQL for Bun, no ORM"}, {"id": 768832833, "item_id": 48052052, "url": "https://news.ycombinator.com/item?id=48052052", "by": "DowsingSpoon", "date": "2026-05-07", "stance": "recommend", "quote": "you can construct queries with a query builder API like C#'s LINQ", "excerpt": "If you want to avoid string manipulation then you can construct queries with a query builder API like C#'s LINQ. Other languages have similar libraries, e.g., Rust has Diesel. If your objection is to the SQL language itself then you might find Datalog interesting. Datalog is a logic-based language where you query by writing predicates rather than writing SQL statements. Check out Logica <https://logica.dev>. It's a l", "context": "", "use_case": "query building", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}, {"id": 759430704, "item_id": 47464419, "url": "https://news.ycombinator.com/item?id=47464419", "by": "raw_anon_1111", "date": "2026-03-20", "stance": "recommend", "quote": "It solves all of your issues with \u201cORMs\u201d", "excerpt": "Let me introduce you to LINQ\u2026 https://learn.microsoft.com/en-us/dotnet/csharp/linq/ It solves all of your issues with \u201cORMs\u201d (it\u2019s really more than just an ORM)", "context": "", "use_case": "data querying in .NET", "switched_from": "", "story": "Java Is Fast. Your Code Might Not Be"}, {"id": 750608547, "item_id": 46913034, "url": "https://news.ycombinator.com/item?id=46913034", "by": "SigmundA", "date": "2026-02-06", "stance": "recommend", "quote": "I much prefer systems like Linq or Kusto", "excerpt": "This is great, I have harped on PG's aversion to plan hints quite a bit in the past (and also lack of plan caching and reuse). One of the biggest issues I run into operationally with relational db's is lack of plan stability and inability as a developer to tell it what I know is the right thing to do always in my application. I use MS SQL Server more than PG currently and if it did not have plan hinting it would have", "context": "", "use_case": "", "switched_from": "", "story": "Waiting for Postgres 19: Better Planner Hints with Path Generation Strategies [video]"}, {"id": 741775617, "item_id": 46360976, "url": "https://news.ycombinator.com/item?id=46360976", "by": "bottlepalm", "date": "2025-12-22", "stance": "recommend", "quote": "LINQ rivals SQL itself", "excerpt": "I love SQL and use it all day long to answer various business questions, but I would never use raw SQL in my code unless there is a good reason for it (sometimes there is). ORMs are there for maintainability, composability, type safety, migrations, etc.. trying to do all that with raw SQL strings doesn't scale in a large code base. You need something that IDE tools can understand and allow things like 'find all refer", "context": "", "use_case": "", "switched_from": "", "story": "The Rise of SQL:the second programming language everyone needs to know"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["embedded queries in c#", "query building", "data querying in .net"], "compared": [{"slug": "zlinq", "name": "ZLinq", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "diesel", "name": "Diesel", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=48645390", "title": "Show HN: Bun-sqlgen \u2013 Type-safe raw SQL for Bun, no ORM", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48620090", "title": "Code duplication is far cheaper than the wrong abstraction", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=48042434", "title": "SQLite Is a Library of Congress Recommended Storage Format", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47454384", "title": "Java Is Fast. Your Code Might Not Be", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46908700", "title": "Waiting for Postgres 19: Better Planner Hints with Path Generation Strategies [video]", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46312755", "title": "The Rise of SQL:the second programming language everyone needs to know", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 1}, "2026-01": {}, "2026-02": {"recommend": 1}, "2026-03": {"recommend": 1}, "2026-04": {}, "2026-05": {"recommend": 1}, "2026-06": {"compare": 1, "recommend": 1}, "2026-07": {}, "2026-08": {}, "2026-09": {}, "2026-10": {}}, "quotes": [{"id": 778436864, "item_id": 48652304, "url": "https://news.ycombinator.com/item?id=48652304", "by": "fabianlindfors", "date": "2026-06-23", "stance": "recommend", "quote": "Microsoft has been doing this for a long time", "excerpt": "Microsoft has been doing this for a long time: https://learn.microsoft.com/en-us/dotnet/csharp/linq/", "context": "", "use_case": "", "switched_from": "", "story": "Show HN: Bun-sqlgen \u2013 Type-safe raw SQL for Bun, no ORM"}, {"id": 777945712, "item_id": 48621607, "url": "https://news.ycombinator.com/item?id=48621607", "by": "Rendello", "date": "2026-06-21", "stance": "compare", "quote": "I see C# has LINQ, which is a query languages embedded in the language", "excerpt": "This is somewhat related: I mention this a lot, but in researching Data-Oriented Design (what Mike was talking about), I came across Richard Fabian's DoD book [1] which talks a lot about database normalization and the like. I found that odd, because the low-level high-performance game code he was talking about certainly wasn't going to marshal data into a DB to run SQL queries on it. It turns out the relational model", "context": "", "use_case": "Embedded queries in C#", "switched_from": "", "story": "Code duplication is far cheaper than the wrong abstraction"}, {"id": 768832833, "item_id": 48052052, "url": "https://news.ycombinator.com/item?id=48052052", "by": "DowsingSpoon", "date": "2026-05-07", "stance": "recommend", "quote": "you can construct queries with a query builder API like C#'s LINQ", "excerpt": "If you want to avoid string manipulation then you can construct queries with a query builder API like C#'s LINQ. Other languages have similar libraries, e.g., Rust has Diesel. If your objection is to the SQL language itself then you might find Datalog interesting. Datalog is a logic-based language where you query by writing predicates rather than writing SQL statements. Check out Logica <https://logica.dev>. It's a l", "context": "", "use_case": "query building", "switched_from": "", "story": "SQLite Is a Library of Congress Recommended Storage Format"}, {"id": 759430704, "item_id": 47464419, "url": "https://news.ycombinator.com/item?id=47464419", "by": "raw_anon_1111", "date": "2026-03-20", "stance": "recommend", "quote": "It solves all of your issues with \u201cORMs\u201d", "excerpt": "Let me introduce you to LINQ\u2026 https://learn.microsoft.com/en-us/dotnet/csharp/linq/ It solves all of your issues with \u201cORMs\u201d (it\u2019s really more than just an ORM)", "context": "", "use_case": "data querying in .NET", "switched_from": "", "story": "Java Is Fast. Your Code Might Not Be"}, {"id": 750608547, "item_id": 46913034, "url": "https://news.ycombinator.com/item?id=46913034", "by": "SigmundA", "date": "2026-02-06", "stance": "recommend", "quote": "I much prefer systems like Linq or Kusto", "excerpt": "This is great, I have harped on PG's aversion to plan hints quite a bit in the past (and also lack of plan caching and reuse). One of the biggest issues I run into operationally with relational db's is lack of plan stability and inability as a developer to tell it what I know is the right thing to do always in my application. I use MS SQL Server more than PG currently and if it did not have plan hinting it would have", "context": "", "use_case": "", "switched_from": "", "story": "Waiting for Postgres 19: Better Planner Hints with Path Generation Strategies [video]"}, {"id": 741775617, "item_id": 46360976, "url": "https://news.ycombinator.com/item?id=46360976", "by": "bottlepalm", "date": "2025-12-22", "stance": "recommend", "quote": "LINQ rivals SQL itself", "excerpt": "I love SQL and use it all day long to answer various business questions, but I would never use raw SQL in my code unless there is a good reason for it (sometimes there is). ORMs are there for maintainability, composability, type safety, migrations, etc.. trying to do all that with raw SQL strings doesn't scale in a large code base. You need something that IDE tools can understand and allow things like 'find all refer", "context": "", "use_case": "", "switched_from": "", "story": "The Rise of SQL:the second programming language everyone needs to know"}]}