I have to concat 2 linq2sql query and I have an issue since the 2 query doesn't return the same number of columns, what is weird is after a .ToList() on the queries, they can concat without problem.
The reason is, for some linq2sql reason, I have 2 more column named test and test2 which come from 2 left outer join that linq2sql automatically create, something like "select 1 as test, tablefields"
Is there any good reason for that? how to remove this extra "1 as test" field?
here a few of examples of what it look like: google result for linq 2 sql "select 1 as test"
OK, let's assuming we have 2 tables: dbo.User and dbo.Client. Each client may be connected (or not) to user. So client records have a nullable foreign key field identifying a user.
For the query:
var query = context.Clients
.Select(c => c.User);
LINQ will produce something similar to:
SELECT [t2].[test], [t2].[Id], [t2].[Username], ...
FROM [dbo].[Client] AS [t0]
LEFT OUTER JOIN (
SELECT 1 AS [test], [t1].[Id], [t1].[Username], ...
FROM [dbo].[User] AS [t1]
) AS [t2] ON [t2].[Id] = [t0].[UserId]
Since not all client records have a matching user record, LINQ is creating a query that ensures there will be a row filled with nulls for every userless client. This is done by creating an extra dummy column called [test].
So rows which have [test] column value set to 1 are really connected to user entity.
I suppose this [test] column is used by LINQ as a flag that means "hey, here is a client with user defined".
If I decide to rewrite this query, I'll use user primary key as the indicator, but it seems for LINQ it is easier to use [test] column.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With