明確化のために更新
Matlab(およびMatlab GUI)を使用した同様の質問を投稿しました。
ただし、今は同じことをしようとしていますが、Windows フォーム、C#、およびデータが既に入力されているローカルの静的データベース ファイルを介して実装されています。
データベース内のデータは次のとおりです。
Compound_ID Component1 Component2 Component3 Value
int string string string int
~24,000 行のデータで。
最初の列「Compound_ID」は主キーです。次の 3 つの列、"Component1"、"Component2"、および "Component3" には、100 個までの可能なコンポーネントのセットからそれぞれ 1 つのコンポーネントが含まれています。各化合物は、100 個のセットから 3 つの異なるコンポーネントで構成されています。コンポーネントの順序は重要ではないため、化合物は 3 つのコンポーネントの組み合わせ (順列とは異なります) です。例:
Compound_ID Component1 Component2 Component3 Value
1456 a b c 10
1457 a b m 50
1458 a c g 25
など。この例から、DB 内に「ag c」またはその他の順列である別の化合物が存在しないことがわかります。しかし、3のほぼ1,000,000の順列)。
ユーザーは、Windows フォームで (チェックボックスのリストまたはスプレッドシートを使用して) いくつかのコンポーネントを選択します。彼らはフォームのボタンを押します。ボタンは、ユーザーが選択したコンポーネントのリストから作成できる、データベースにリストされているすべての化合物を検索するメソッドを呼び出します。このデータは、同じフォームの dataGridView に表示されます。
1 つの方法 (以前の投稿で別のユーザーが説明した Matlab ソリューションに似ています): 3 つの論理配列を生成します。各列に 1 つずつ、「1」は 15 のコンポーネントの 1 つを含む行を表します。列を一緒に追加すると、値が「3」の行だけが探している行になります。次に、それらの行を含む新しいテーブルを作成し、datagridview に表示します。このコードがどのように見えるかについてのヒントは役に立ちます。
すでに提供されているソリューションのいくつかを試してみます。これには、C# から SQL クエリを呼び出す方法を考え出すことが含まれます。これは検索できるとのことで、例は既に提供されています。
ご協力いただきありがとうございます。これは好奇心から生まれた完全に独立したプロジェクトなので、深刻なビジネスではありません。私は比較的 C# (および間違いなく SQL クエリ) に慣れていないため、無知であることをお許しください。それがみんなの時間をより有効に活用できるなら、少し説明のある情報源を教えてください。