ユーザ入力は、私は以下の製品最も具体的な一致する項目
public class Product
{
public string Name {get;set;}
public string Id {get;set;}
}
でのソースリストを持っている
var items = new List<string> {'BY1 2PX', 'BY12', 'BY1', 'BY'};
以下のように分割し、リストに格納される、「BY1 2PX」のようになります見つけますサンプルの製品リスト注文に必要なものはありません。それはどのような順序でもかまいません。
var products = new List<Product>{
new Product("1", "BY1 2PX"),
new Product("2", "BY12"),
new Product("3", "BY1"),
new Product("4", "BY"),
new Product("5", "AA2 B2X"),
//...etc
}
私の出力は、最も特定の一致があるため、1をフェッチする必要があります。 Id = 1がそこになければ、それはId = 2のようにフェッチされているはずです...誰でもlinqクエリを書いてくれたら助かりますか?私は以下のようなものを試しましたが、これは大丈夫ですか?
商品リストは、特定の一致がより少なくなる前に「最も具体的な」一致が発生した順番で並べ替えられますか?そうでない場合は、どのようにマッチの優先順位を定義しますか? –
'List'がなぜ必要なのですか? 'Dictionary 'を使うと単純化しませんか?辞書の検索ははるかに高速です。 –
Fabjan
'string.Equals'を使用しているので、「最も具体的」は少し不明です。これにより、最初の* exact *マッチが見つかります。 – Groo