投稿者 魔界の仮面弁士  (社会人) 投稿日時 2020/3/16 17:58:54
C1FlexGrid は使ったことが無く、所有もしていないため、
メーカーのサポートページを見ているだけではありますが:
https://docs.grapecity.com/help/c1/winforms/winforms_flexgrid/


> グリッドの編集結果を取り出す方法であったり
.DataSource プロパティにバインドしているのなら、
DataTable に編集結果が格納されていると思います。
もしもアンバウンドで使っているなら、.GetData メソッドで編集結果が得られるのでは
ないでしょうか。(総行数は .Rows.Count で)


> 重複チェックのアルゴリズムなど
幾つか方法がありますが、2010 なら DataSet の制約機能を使うのはどうでしょう?

まずは DataTable に重複キー制約を付与しておきます。(型付DataSet でも可)
https://docs.microsoft.com/ja-jp/dotnet/api/system.data.uniqueconstraint?view=netframework-4.8

そしてユーザーには、EnforceConstraints = False の状態で入力させておき、
重複検証を行う際に EnforceConstraints = True にします。制約違反があると
例外が発生するので、Try~Catch で補足します。

EnforceConstraints = True で、どの行が原因で制約違反になったのかを調べるには、
DataTable の GetErrors メソッドを使えます。
エラー行のうち、どの列に問題があったのかを調査するには、
DataRow の GetColumnsInError メソッドと GetColumnError メソッドを使えます。


あるいは LINQ to DataSet で Group By して、.Count() > 1 なレコードを得るという手もありそう。