두 개의 관찰 가능한 컬렉션이 있습니다. TruckItems
TruckItemsComparison
. 둘 다 똑같습니다.두 개의 컬렉션 데이터를 서로 비교하십시오.
EF6의 첫 번째 TruckItems
컬렉션에 데이터를로드 한 다음 10 초 후 데이터를 두 번째 컬렉션 TruckItemsComparison
에로드합니다. 최근에 제 2 컬렉션에 추가 된 새 데이터가 최근에 다른 소스에서 업데이트되었을 수 있으며 아직 첫 번째 컬렉션에없는 최신 데이터 만 추가해야합니다.
두 번째 컬렉션의 ID 중 ANY가 첫 번째 컬렉션의 ID와 일치하지 않는지 확인한 다음 일치하지 않는 항목 만 추가하고 싶은지 확인하고 싶습니다.
CODE :
내 데이터로드 여기입니다 :
public void UpdateTrucks()
{
LoadTrucks();
if (TruckItems.Count != 0)
{
var truckItemsId = TruckItems.Where(x => x.TruckId != 0).First().TruckId;
foreach (var item in TruckItemsComparison.Where(x => x.TruckId != truckItemsId))
{
TruckItems.Add(item);
}
}
}
내 문제는 그것이 추가하는 것입니다 : 내 두 컬렉션을 비교하려는 경우 여기
private async void LoadTrucks()
{
using (TruckServiceClient service = new TruckServiceClient())
{
var items = await service.GetTrucksAsync();
if (TruckItems.Count == 0)
{
foreach (var item in items)
{
TruckItems.Add(new TruckItems
{
TruckId = item.TruckId,
TruckQuoteId = item.QuoteId,
TruckPhaseId = item.CurrentPhaseId,
TruckChassisManufacturer = item.ChassisManufacturer,
TruckChassisModel = item.ChassisModel,
TruckStatus = item.Status,
TruckJobNumber = item.JobNumbers,
TruckAddedBy = item.AddedBy,
TruckClientName = item.ClientName,
TruckClientSurname = item.ClientSurname,
TruckClientDetail = item.ClientDetail,
TruckCurrentPhase = item.CurrentPhase
});
}
}
foreach (var item in items)
{
TruckItemsComparison.Add(new TruckItems
{
TruckId = item.TruckId,
TruckQuoteId = item.QuoteId,
TruckPhaseId = item.CurrentPhaseId,
TruckChassisManufacturer = item.ChassisManufacturer,
TruckChassisModel = item.ChassisModel,
TruckStatus = item.Status,
TruckJobNumber = item.JobNumbers,
TruckAddedBy = item.AddedBy,
TruckClientName = item.ClientName,
TruckClientSurname = item.ClientSurname,
TruckClientDetail = item.ClientDetail,
TruckCurrentPhase = item.CurrentPhase
});
}
}
}
그리고이입니다 ID가 일치하는지 여부에 관계없이 두 컬렉션의 데이터를 함께 수집합니다. 분명히 여기 내 논리가 작동하지 않습니다, 그래서 아무도 날 데이터를 비교할 수있는 방법을 보여 주면 내 TruckItems
컬렉션에 아직 존재하지 않는 ID를 삽입 할 수 있습니다. 고마워요. any 자세한 정보가 필요하면 알려주세요.
어떻게 그렇게 똑똑해? : P 고맙습니다. 두 번째 방법은 완벽하게 작동했습니다. – CareTaker22