ここではパフォーマンスに問題があります。私はそのことでWholeSaleEntryフィルタリングする必要フィルタリスト1リスト2
public class WholeSaleEntry
{
public string SKU { get; set; }
public string Stock { get; set; }
public string Price { get; set; }
public string EAN { get; set; }
}
とProductList
public class ProductList
{
public string SKU { get; set; }
public string Price { get; set; }
public string FinalPrice { get; set; }
public string AlternateID { get; set; }
}
あるWholeSaleEntry
私がリストになった(50K項目)が含まれ とリスト(120K項目)が含まれてい
EANとSKUがEANまたはSKUがProductList.AlternateIDの場合には、 私はこのコードを書いたが、perf ormanceは本当に遅いです
List<WholeSaleEntry> filterWholeSale(List<WholeSaleEntry> wholeSaleEntry, List<ProductList> productList)
{
List<WholeSaleEntry> list = new List<WholeSaleEntry>();
foreach (WholeSaleEntry item in wholeSaleEntry)
{
try
{
string productSku = item.SKU;
string productEan = item.EAN;
var filteredCollection = productList.Where(itemx => (itemx.AlternateID == productEan) || (itemx.AlternateID == productSku)).ToList();
if (filteredCollection.Count > 0)
{
list.Add(item);
}
}
catch (Exception)
{
}
}
return list;
}
フィルタリングの方法はありますか、それとも一括でフィルタリングできるものはありますか?
まず、「Where」ではなく「Any」を使用します。すべてのレコードをフィルタリングし、カウントを確認する場所。 Anyでは、最初の一致でフィルタリングを停止します。それで 'if(productList.Any(item => ...))list.Add(item);' – Reniuz
私はそれを一度も使っていません。正直なところ私は試してみましたが、私のコードでそれを実装する方法を理解できませんでした –
私はちょうどどこかに変更する必要がありますか? –