Linq to sql 为什么linq2sql有时会添加一个类似select1的字段作为test,而其他字段则是有效字段

Linq to sql 为什么linq2sql有时会添加一个类似select1的字段作为test,而其他字段则是有效字段,linq-to-sql,Linq To Sql,我必须解析2 linq2sql查询,我有一个问题,因为2查询返回的列数不同,奇怪的是在查询上的.ToList()之后,它们可以毫无问题地解析 原因是,出于某种linq2sql原因,我又有两个列,名为test和test2,它们来自linq2sql自动创建的两个左外部联接,类似于“选择1作为测试,tablefields” 有什么好的理由吗?如何删除这个额外的“1作为测试”字段 下面是它的几个示例:好的,假设我们有两个表:dbo.User和dbo.Client。每个客户端都可以连接(或不连接)到用户。

我必须解析2 linq2sql查询,我有一个问题,因为2查询返回的列数不同,奇怪的是在查询上的.ToList()之后,它们可以毫无问题地解析

原因是,出于某种linq2sql原因,我又有两个列,名为test和test2,它们来自linq2sql自动创建的两个左外部联接,类似于“选择1作为测试,tablefields”

有什么好的理由吗?如何删除这个额外的“1作为测试”字段


下面是它的几个示例:

好的,假设我们有两个表:
dbo.User
dbo.Client
。每个
客户端
都可以连接(或不连接)到
用户
。因此,
客户端
记录有一个可为空的外键字段,用于标识
用户

对于查询:

var query = context.Clients
      .Select(c => c.User);
LINQ将生产类似的产品:

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]
由于并非所有
客户机
记录都有匹配的
用户
记录,因此LINQ正在创建一个查询,以确保每个无用户的
客户机
都有一行空值。这是通过创建一个名为
[test]
的额外虚拟列来完成的

因此,将
[test]
列值设置为
1
的行实际上连接到
user
实体

我假设这个
[test]
列被LINQ用作一个标志,表示“嘿,这是一个用户定义的客户机”


如果我决定重写此查询,我将使用
user
主键作为指示符,但对于LINQ来说,使用
[test]
列似乎更容易。

我看到过,这很奇怪,据我所知,您对此无能为力。我从未见过它导致问题-如果它破坏了你的应用程序,你应该发布失败的实际代码。遗憾的是,我无法发布导致问题的实际代码。也许你应该在一个示例中重现你的症状,你可以发布代码片段?谢谢!这是我的同事和我试图弄明白的一个谜!