←back to thread

201 points olvy0 | 3 comments | | HN request time: 0.001s | source
Show context
high_na_euv ◴[] No.41878416[source]
LINQ is so fucking useful and well designed feature of .NET ecosystem that it is unreal when you gotta use lang which doesnt have such a thing.

C# design team is/was unparalleled

replies(7): >>41878459 #>>41878543 #>>41878588 #>>41878686 #>>41879163 #>>41879194 #>>41879315 #
mhh__ ◴[] No.41878588[source]
Maybe you've been unlucky but LINQ didn't really seem all that interesting to me using it.

It's pretty well put together but it was very hard to work out the patterns of what it was doing underneath e.g. I could not tell you now how to implement a custom IQueryable (I know where to look but couldn't tell you the rhythms of it) for some database and I am the type of person who usually does go and find that kind of thing out before using something for a "serious" project.

Maybe it's just a microcosm for C# as a whole - very productive language, good design team, quite hobbled by it's weird/philistine upbringings: Bjarne said within C++ there is a simple language trying to escape, in C# you basically have a simple language buried in nouns.

replies(4): >>41878661 #>>41878884 #>>41879002 #>>41879297 #
pjc50 ◴[] No.41878661[source]
> It's pretty well put together but it was very hard to work out the patterns of what it was doing underneath e.g. I could not tell you now how to implement a custom IQueryable

There's a lot hidden in there, but basically they expect you to use EF. Writing an IQueryable is a similar amount of work to writing a SQL query planner. You get passed a tree of Expression objects.

https://learn.microsoft.com/en-us/archive/blogs/mattwar/linq...

replies(2): >>41879320 #>>41880802 #
1. SideburnsOfDoom ◴[] No.41879320[source]
> basically they expect you to use EF. Writing an IQueryable...

I don't agree. I don't feel any expectation to use EF. It would not be relevant anyway to our code.

LINQ is not EF and EF is not LINQ. EF uses LINQ but not vice versa. LINQ is useful without EF.

The LINQ extension methods that we use constantly are on IEnumerable<T> so EF and IQueryable is of no importance to us, but LINQ is used everywhere.

replies(1): >>41880438 #
2. pjc50 ◴[] No.41880438[source]
> IQueryable is of no importance to us

I was discussing IQueryable with someone else to whom it was important. In reply to

> I could not tell you now how to implement a custom IQueryable (I know where to look but couldn't tell you the rhythms of it) for some database

And "for some database" the default answer is "use EF" as the intermediary between LINQ queries and the database itself, rather than delving into IQueryable.

LINQ-to-objects is very important and useful but I was talking about something else.

replies(1): >>41886496 #
3. SideburnsOfDoom ◴[] No.41886496[source]
My apologies, that reply of mine was a bit argumentative, without regard to which post I was arguing against.

Yes, I understand that implementing IQueryable is a beast, but let's not pretend that writing a database connectivity layer was a trivial, everyday activity before IQueryable. It's a specialised, tricky task. IQueryable may not make it easier, but it never was "easy" per se. Nor common, or usually necessary. Or something to do as an exercise "before using something for a serious project" as the grandparent post suggests.

YMMV as to how important IQueryable is to your code.

On the other hand, if you can write extension methods over "this IEnumerable<T> source" you can extend LINQ. IQueryable being complex is no barrier to that, in any way.