私が作成したスキンは、見栄えを良くするために、値を取得せずにテキストのみを取得します。このメソッドを使用して、このテーブル内のすべてのデータをクエリするメソッドのみが必要になります。もちろん、これら 2 つのリストのみを返すこともできます。
コード
/// <概要>
/// カラム名に基づいてインデックスを取得します
/// </概要>
/// <param name="fiId">列名</param>
/// <returns>列インデックス</returns>
プライベート文字列 GetFunctionNameByName(文字列名)
{
var result = this.objWSM.GetFunctionInfo().AsEnumerable().Where(f1 => f1["fiName"].ToString().Trim() == Name.ToString().Trim()).FirstOrDefault() ;
return result["fiId"].ToString();
}
GetFunctionInfo は、テーブル内のすべての情報をクエリするメソッドです
/// <概要>
/// 列インデックスに基づいて列名を取得します
/// </概要>
/// <param name="fiId">列インデックス</param>
/// <returns>列名</returns>
プライベート文字列 GetFunctionNameById(int fiId)
{
var result = this._fiTable.AsEnumerable().Where(fi => Convert.ToInt32(fi["fiId"]) == fiId).FirstOrDefault();
return result["fiName"].ToString();
}
2 つのメソッドは対応しています。データベースに接続するときに、すべてのメソッドを一度にクエリするだけで済むため、この方法の方が便利だと思います。
このステップについて説明しましょう。
this.objWSM.GetFunctionInfo().AsEnumerable().Where(f1 => f1["fiName"].ToString().Trim() == Name.ToString().Trim()).FirstOrDefault();
this.objWSM.GetFunctionInfo() はすべてをクエリするメソッドです
AsEnumerable().Where() は汎用行を返します。これは LinQ 式を使用してクエリできます。
f1 => f1["fiName"].ToString().Trim() == Name.ToString().Trim())Linq 式
F1 は新しく生成された行の名前です。
f1["fiName"]。もちろん、これはこの行の列名であり、 => の後に条件が続き、その前にセットが続きます。
f1["fiName"].ToString().Trim() == Name.ToString().Trim() は、この行に 2 つの等しい値がある場合、それらを取り出すことを意味します
FirstOrDefault(); は最初の行を取得することを意味します。
この時点で、この 2 つのカラムをクエリするメソッドがあれば、この 2 つのメソッドをフロントに記述すれば問題はほぼ解決します。毎回、特別なメソッドを 2 つ記述する必要はありません。データベースにアクセスできるので、とても便利だと思います。