여러 목록을 병합하고 반환하려면이 코드를 온라인에서 검색했습니다. 이 코드는 모든 속성이 문자열 인 경우 작동하지만 일부 속성이 double 인 경우 오류가 발생합니다. 이 오류는 "Operator '??'입니다. 'double'및 'double' "유형의 피연산자에는 적용 할 수 없습니다. 어떤 도움이라도 대단히 감사합니다. 고마워요C# 이중 속성을 가진 목록 병합
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication11
{
class Program
{
static void Main(string[] args)
{
List<Project> lst1; List<Project> lst2; List<Project> lst3;
lst1 = new List<Project>
{
new Project { ProjectId = 1, ProjectName = "P1" },
new Project { ProjectId = 2, ProjectName = "P2" },
new Project { ProjectId = 3, ProjectName = "P3" }
};
lst2 = new List<Project>
{
new Project { ProjectId = 1, CustomerNum = 1},
new Project { ProjectId = 2, CustomerNum = 2},
new Project { ProjectId = 3, CustomerNum = 3}
};
lst3 = new List<Project>
{
new Project { ProjectId = 1, Address = 10},
new Project { ProjectId = 2, Address = 20},
new Project { ProjectId = 3, Address = 30}
};
List<Project> lst = lst1.Union(lst2).Union(lst3).ToLookup(x => x.ProjectId).Select(x => new Project()
{
ProjectId = x.Key,
ProjectName = x.Select(y => y.ProjectName).Aggregate((z1, z2) => z1 ?? z2),
CustomerNum = x.Select(y => y.CustomerNum).Aggregate((z1, z2) => z1 ?? z2),
Address = x.Select(y => y.Address).Aggregate((z1, z2) => z1 ?? z2)
}).ToList();
foreach (var item in lst)
{
Console.WriteLine("{0}, {1}, {2}, {3}", item.ProjectId, item.ProjectName, item.CustomerNum, item.Address);
}
}
}
public class Project
{
public int ProjectId { get; set; }
public string ProjectName { get; set; }
public double CustomerNum { get; set; }
public double Address { get; set; }
}
}
?? 두 배로? 그리고 몇 가지 오류가 발생했습니다 – user3072518
아니, 나는 대체하지 말고 ??. 문제는 유형입니다. 두배 ?? double은 null 가능하지 않기 때문에 double은 유효하지 않습니다. 하지만 두 배? ?? 더블? 더블이 유효하기 때문에 유효합니까? Nullable Double입니다. 다른 유형입니다. –
입력 해 주셔서 감사합니다. 코드를 어떻게 변경 하시겠습니까? – user3072518