我有兩個需要比較的列表(carOptions和custOptions)。 這些列表的兩個都在我的Customer類象下面這樣:找到不在兩個列表中的值的最佳方法c#
public class CustomerDTO
{
public int CustomerId { get; set; }
//other props removed for brevity
public List<OptionDTO> SelectedCarOptions { get; set; }
public List<OptionDTO> SelectedCustomerOptions { get; set; }
}
var existingData = _myRepository.GetDataByCustomer(customerId, year);
var existingCarOptions = existingData.Select(f => f.SelectedCarOptions);
var existingCustomerOptions = existingData.Select(f => f.SelectedCustomerOptions);
existingData是CustomerDTO的IEnumerable,然後existingCarOptions和existingCustomerOptions是IEnumerable<List<OptionDTO>>
在該方法中,我有IEnumerable<OptionDTO>
選項列表。被傳遞在我然後根據枚舉如下打破這種分解成車或客戶:
var newCarOptions = options.Where(o => o.OptionTypeID == OptionType.CarOptions);
var newCustomerOptions = options.Where(o => o.OptionTypeID == OptionType.CustomerOptions).ToList();
我需要做的就是找到哪些選項是在一個集合,但沒有在 另一個。
我試着如下,但在Except上得到一個錯誤(我可能需要在該類中創建我自己的靜態方法),但我不確定這是最好的方法嗎?
if (existingCarOptions.Count() != newCarOptions.Count())
{
//var test = newCarOptions.Except(existingCarOptions);
}
if (existingCustomerOptions.Count() != newCustomerOptions.Count())
{
//var test2 = newCustomerOptions.Except(existingCustomerOptions);
}
是不是也該方法相當多的代碼 - 如果需要的話,但也許還有一個更簡單的方法,我可以做到這一點,我可以出其切分爲sperate的方法呢?
什麼是你的'。除()'得到錯誤? –
你是否缺少'使用System.Linq'指令? – Milen
「existingCarOptions」和「newCarOptions」的泛型類型參數是什麼? – Fabjan