gpt4 book ai didi

linq - 如何合并两个 Linq 查询的两个输出?

转载 作者:行者123 更新时间:2023-12-01 11:07:26 29 4
gpt4 key购买 nike

我正在尝试合并这两个对象,但不确定如何合并。您能帮我合并这两个结果对象吗?

 //
// Create Linq Query for all segments in "CognosSecurity"
//
var userListAuthoritative = (from c in ctx.CognosSecurities
where (c.SecurityType == 1 || c.SecurityType == 2)
select new {c.SecurityType, c.LoginName , c.SecurityName}).Distinct();
//
// Create Linq Query for all segments in "CognosSecurity"
//
var userListAuthoritative3 = (from c in ctx.CognosSecurities
where c.SecurityType == 3 || c.SecurityType == 0
select new {c.SecurityType , c.LoginName }).Distinct();

我想我知道该去哪里了……但要回答这个问题,对象的类型是 int , string , string对于 SecurityType , LoginName , 和 SecurityName分别

如果你想知道为什么我把它们打成这样是因为我想在做不同的时候忽略一列。以下是我正在转换为 SQL 的 SQL 查询。

  select distinct SecurityType, LoginName, 'Segment'+'-'+SecurityName
FROM [NFPDW].[dbo].[CognosSecurity]
where SecurityType =1

select distinct SecurityType, LoginName, 'Business Line'+'-'+SecurityName
FROM [NFPDW].[dbo].[CognosSecurity]
where SecurityType =2

select distinct SecurityType, LoginName, SecurityName
FROM [NFPDW].[dbo].[CognosSecurity]
where SecurityType in (1,2)

最佳答案

你不能加入这些,因为类型不同(第一个在结果类型中有 3 个属性,第二个有两个)。

如果您可以容忍将空值放入第二个查询的第三个结果中,这将有所帮助。然后我会建议你只做一个 userListAuthoritative.concat(userListAuthoritative3 ) 但我认为这不会起作用,因为 linq 生成的匿名类型将不属于同一类,即使结构是一样的。要解决这个问题,您可以定义一个 CustomType 来封装元组并在两个查询中执行 select new CustomType{ ... } 或使用 select() 在类似时尚。

实际上,后一种 select() 方法还允许您通过在 CustomType 的后处理中使用 null 实现 select 来解决参数计数不匹配的问题。

编辑:根据下面的评论,一旦结构相同,匿名类型将相同。

关于linq - 如何合并两个 Linq 查询的两个输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3877226/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com