そのような問題があります。データベースから取得される 1 つのリストと、プログラム中に作成される 2 つ目のリストがあります。表は次のとおりです。
id name
One my foo1 foo2 foo3
2 my fow1 foo2 foo3
...
等々。プログラムの操作中に生成されるリストは、ファイルからデータを取得します。そして:
id name parent
...
問題は、データベース内にあるテーブルの列の親 ID 番号列がどこにあるかです。現時点では、決定を下しました:
int countMatch = 0;
foreach (var productse in prod)
{
var splitted = productse.name.Replace(" ", " ").Split(' ');
int maxmatch = splitted.Count(s => addProd.name.Contains(s));
if (maxmatch > countMatch) countMatch = maxmatch;
}
var fixedCount = addProd.name.Split(' ').Count()/1.5;// 1.5 Choose the most best rate
if (countMatch <= fixedCount && prod.All(x => !x.name.ToUpper().Contains(addProd.name.ToUpper())))
prod.Add(addProd);
その「製品」リストがデータベースにロードされた後
このソリューションは機能しますが、あまりうまくいきません。一部の名前はより小さく最適なため、一部のレコードは作成されません。
読み込もうとしているサンプルデータ:
Intel Core i3-2120 3.3GHz 3Mb 2xDDR3-1333 HDGraphics2000 TDP-65w LGA1155 OEM - name created
次のデータが取得されます id 親 (上記のエントリ) :
Intel Core i3-2120 3.3GHz 3Mb 2xDDR3-1333 HDGraphics2000 TDP-65w LGA1155 OEM
Intel Core i3-2120 3.3GHz 3Mb 2xDDR3-1333 HDGraphics2000 TDP-65w LGA1155 BOX w/cooler
Intel Core i3-2130 3.4GHz 3Mb 2xDDR3-1333 HDGraphics2000 TDP-65w LGA1155 OEM
Intel Core i3-3210 3.2GHz 3Mb 2xDDR3-1333 HDGraphics2500 TDP-55w LGA1155 OEM
Intel Core i3-3225 3.3GHz 3Mb 2xDDR3-1333 HDGraphics4000 TDP-55w LGA1155 OEM
Intel Core i3-3225 3.3GHz 3Mb 2xDDR3-1333 HDGraphics4000 TDP-55w LGA1155 BOX w/cooler
Intel Core i3-3240 3.4GHz 3Mb 2xDDR3-1333 HDGraphics2500 TDP-55w LGA1155 OEM
Intel Core i3-3240 3.4GHz 3Mb 2xDDR3-1333 HDGraphics2500 TDP-55w LGA1155 BOX w/cooler
Intel Core i5-2500K 3.3GHz (TB up to 3.7GHz) 6Mb 2xDDR3-1333 HDGraphics3000 TDP-95w LGA1155 OEM
Intel Core i5-3550 3.3GHz (TB up to 3.7GHz) 6Mb 2xDDR3-1333 HDGraphics2500 TDP-77w LGA1155 OEM
Intel Core i5-3550 3.3GHz (TB up to 3.7GHz) 6Mb 2xDDR3-1333 HDGraphics2500 TDP-77w LGA1155 BOX w/cooler
データをテーブルに入れる必要があり、データが最大数の一致に類似している場合は、親に到達します。ありがとうございました!