この記事は機械翻訳されています。英語版の記事を表示するには、[英語] のチェック ボックスをオンにしてください。また、テキストにマウス ポインターを合わせると、ポップアップ ウィンドウに英語のテキストを表示することもできます。
翻訳
英語

DataColumn.Expression プロパティ

 

公開日: 2016年10月

取得または行のフィルター選択、列の値を計算または集計列を作成するための式を設定します。

名前空間:   System.Data
アセンブリ:  System.Data (System.Data.dll 内)

public string Expression { get; set; }

プロパティ値

Type: System.String

列の値を計算したり集計列を作成する式です。 式の戻り値の型はによって決まります、 DataType 列のです。

Exception Condition
ArgumentException

AutoIncrement または Unique にプロパティが設定されている trueします。

FormatException

CONVERT 関数を使用しているときに、文字列式の評価結果が、文字列型のパラメーターに変換できる表現に含まれません。

InvalidCastException

CONVERT 関数を使用しているときに要求されたキャストはできません。 考えられるキャストの詳細については、次のセクションで、変換関数を参照してください。

ArgumentOutOfRangeException

SUBSTRING 関数を使用すると、開始引数は範囲外です。

または

SUBSTRING 関数を使用すると、長の引数は範囲外です。

Exception

LEN 関数または TRIM 関数を使用すると、式は文字列に評価されません。 これに評価される式が含まれます Charします。

1 つの用途、 Expression プロパティは、計算列を作成します。 たとえば、税の値を計算するには、単価は特定の地域の税率が乗算されます。 税率が異なる地域からためにではありません。 列に単一の税率を格納すること代わりに、値は、計算を使用して、 Expression プロパティ、次のセクションで Visual Basic コードで示すようにします。

DataSet1.Tables("Products") します。Columns("tax") します。式 ="UnitPrice * 0.086"

第 2 の用途では、集計列を作成します。 計算された値と同様に、集計操作を実行内の行の完全なセットに基づいて、 DataTableです。 単純な例は、セットに返される行の数をカウントがあります。 これは、この Visual Basic コードで示すように、特定の営業担当者が完了したトランザクションの数をカウントする方法です。

DataSet1.Tables("Orders").Columns("OrderCount").Expression = "Count(OrderID)"

式を作成するときに使用して、 ColumnName プロパティを列を参照してください。 たとえば場合、 ColumnName 式は次のようにする 1 つの列は、"UnitPrice"と別の"Quantity"は。

"UnitPrice * Quantity"

System_CAPS_noteメモ

列が式で使用する場合、式は、その列に依存していると呼びます。 依存列は名前を変更または削除した場合、例外はスローされません。 ここで無効な式列にアクセスする場合、例外がスローされます。

フィルターの式を作成するときは、単一引用符を含む文字列を囲みます。

"LastName = 'Jones'"

列名は、英数字以外の文字が含まれています数字で始まってまたは、次の予約語のいずれかに一致 (大文字小文字)、次の段落で説明したように特別な処理が必要です。

And

False

In

Is

Like

Not

Null

または

True

場合は、列名は、上記の条件のいずれかを満たす、いずれかの角かっこで囲む必要がありますか"'"(アクサン グラーブ) 引用符です。 たとえば、式の中で「Column #」という名前の列を使用する記述できます"[列 #/xaml のいずれか]"。

合計 * [列数]

または「' 列 #'」:

合計 * ' の列番号 '

角かっこでクリックし、列名を囲むかどうか ']' と ' \' 文字 (ではないその他の文字) には円記号 (「\」) 文字でそれらを付加することによってエスケープする必要があります。 列名がアクサン グラーブ文字で囲まれている場合に含めることはできません、アクサン グラーブ文字です。 たとえば、「列 \」という名前の列が書き込まれるなります。

合計 * [列の [\] \\]

または

合計 * ' の列の \'

ユーザー定義の値は、列の値と比較する式内で使用可能性があります。 文字列値は、単一引用符で囲む必要があります (および、別の単一引用符を先頭に付けてエスケープする文字列値内の各単一引用符文字が)。 日付の値は、シャープ記号 (#) またはデータ プロバイダーに基づく単一引用符 (') で囲む必要があります。 10 進数と科学的表記法、数値です。 例:

"FirstName ="John""

"価格 < 50.00 ="

"誕生日 < #1/31/82 #"

列挙値を格納する列で値を整数データ型にキャストします。 例:

"EnumColumn = 5"

インバリアント カルチャのロケールでは、すべてのリテラル式を表す必要があります。 DataSet を解析し、リテラル式が変換インバリアント カルチャの現在のカルチャではなく常に使用します。

値を囲む単一引用符がある場合は、文字列リテラルが識別されます。 例:

"John"

Boolean リテラルには、true または false です。式ではマークアップされません。

Integer リテラル [+-]?[0-9] + 扱われる System.Int32, 、System.Int64 または System.Doubleです。 System.Double サイズはどの程度の数によって精度が低下します。 たとえば、リテラル内の数値が 2147483650、 DataSet を数値として解析はまず、 Int32です。 数が大きすぎるために、この操作は成功しません。 ここで DataSet と番号を解析、 Int64, 、これは成功します。 リテラルが、Int64 の最大値より大きい数値だった場合 DataSet リテラルを使用して、解析 Doubleします。

4.42372E などの数値を指数表記を使用して実際のリテラル-30 を使用して解析 System.Doubleします。

実数のリテラル、科学的表記法はなく、小数点の付いた、として扱われます System.Decimalします。 数がによってサポートされる最大値または最小値を超えたかどうか System.Decimal, 、としては、解析結果、 System.Doubleです。 例:

変換される 142526.144524、 Decimalです。

345262.78036719560925667 として扱われる、 Doubleです。

連結は、ブール型 AND、OR、および NOT 演算子を使用して許可されます。 句をグループ化かっこを使用し、優先順位を強制できます。 AND 演算子では、その他の演算子に優先します。 例:

(LastName ="Smith"LastName = 'Jones')FirstName ="John"

比較式を作成する場合は、次の演算子が使用できます。

<

>

<=

>=

<>

=

IN

LIKE

次の算術演算子は、式でもサポートされます。

+ (加算)

-(減算)

* (乗算)

/(除算)

% (剰余)

文字列を連結するには、使用、+ 文字です。 値、 CaseSensitive のプロパティ、 DataSet クラスは、文字列比較は大文字小文字を区別するかどうかを決定します。 ただしでその値をオーバーライドして、 CaseSensitive のプロパティ、 DataTable クラスです。

両方の * と % は、LIKE 比較でワイルドカード文字を区別しないで使用できます。 LIKE 句内の文字列が含まれている場合、*、%、またはそれらの文字は、角かっこ () で囲む必要があります。 角かっこが句である場合は、各かっこが角かっこ (例 [] または []) で囲む必要があります。 ワイルドカードには、開始点と、パターンの末尾でまたはのパターンでは、最後に、またはパターンの開始時に許可されています。 例:

"アイテム名のように ' * 製品 *'"

"アイテム名のように ' * 製品 '"

「アイテム名のように ' 製品 *'」

文字列の途中では、ワイルドカード文字は使用できません。 たとえば、' te * xt' は許可されていません。

親テーブルで参照できる式、列名に付加することによって Parentします。 たとえば、 Parent.Price という名前の親テーブルの列を参照して Priceします。

子が親の 1 つ以上の行を持っている場合は、Parent(RelationName) を使用します。ColumnName します。 たとえば、次のような Parent(RelationName) があるとします。価格は、リレーションシップを使用して価格をという名前の親テーブルの列を参照します。

子テーブルの列で参照できる式、列名に付加することによって Childします。 ただし、親子リレーションシップは、複数の行を返す可能性があります、ために、集計関数で子の列への参照を含める必要があります。 たとえば、 Sum(Child.Price) という名前の列の合計を返すよう Price 子テーブルでします。

構文は、テーブルの 1 つ以上の子の場合: Child(RelationName)です。 例では、という 2 つの子テーブルが存在する場合の CustomersOrders, 、および DataRelation オブジェクトの名前は Customers2Orders, 、参照に次のようになります。

Avg(Child(Customers2Orders) します。数量)

次の集計の種類がサポートされています。

Sum (合計)

Avg (平均)

Min (最小)

最大値 (最大)

カウント (Count)

StDev (統計的標準偏差)

Var (分散)。

集計は、通常、リレーションシップに沿って実行されます。 集計式を作成するには、親/子リレーションシップの参照までの説明で詳述するよう前に示した関数と子テーブルの列のいずれかを使用します。 例:

Avg(Child.Price)

Avg(Child(Orders2Details) します。価格)

集計は、1 つのテーブルに対しても実行できます。 たとえば、"Price"をという名前の列に図の概要を作成します。

Sum(Price)

System_CAPS_noteメモ

集計を作成する 1 つのテーブルを使用する場合がなくなる group by 機能します。 代わりに、すべての行では、列に、同じ値を表示するとします。

集計関数を返しますがかどうかは、テーブルは行を持たない、 nullです。

データ型は、確認するには常に確認できる、 DataType 列のプロパティです。 次のセクションに示すように、Convert 関数を使用してデータ型を変換することもできます。

集計は、1 つの列にのみ適用できるしの集計内の他の式は使用できません。

次の関数もサポートされます。

CONVERT

説明

特定の式を指定した .NET Framework の型に変換します。

構文

変換 (expression, 、type)

引数

expression -に変換する式。

type .NET Framework の型が値の変換先-。

例: myDataColumn.Expression="Convert (合計、'System.Int32')"

次の例外が有効では、すべての変換: Boolean との間に変換できる Byte, 、SByte, 、Int16, 、Int32, 、Int64, 、UInt16, 、UInt32, 、UInt64, 、String と自体のみです。 Char 強制的に変換できる Int32, 、UInt32, 、String, 、および自体のみです。 DateTime 強制的に変換できる String と自体のみです。 TimeSpan 強制的に変換できる String と自体のみです。

LEN

説明

文字列の長さを取得します。

構文

LEN (expression)

引数

expression --評価される文字列。

例: myDataColumn.Expression="Len(ItemName)"

ISNULL

説明

Checked 式または置換値は、式とを返すかを確認します。

構文

ISNULL (expression, 、replacementvalue)

引数

expression --の式を確認します。

replacementvalue --場合、式が null, 、replacementvalue が返されます。

例: myDataColumn.Expression="IsNull (price,-1)"

IIF

説明

論理式の結果に応じて 2 つの値のいずれかを取得します。

構文

IIF(expr, truepart, falsepart)

引数

expr -評価する式。

truepart --式が true のかどうかに返される値。

falsepart --式が false のかどうかに返される値。

例: myDataColumn.Expression ="IIF (合計 > 1000、'コストの高い'、'親愛なる')

TRIM

説明

削除すべて先頭と末尾の空白の \r、\n、\t のような文字 ' '

構文

トリミング (expression)

引数

expression -をトリミングする式。

SUBSTRING

説明

文字列で指定された時点から開始、指定された長さの部分文字列を取得します。

構文

部分文字列 (expression,、 start,、 length)

引数

expression --部分文字列のソース文字列。

start 部分文字列の開始位置を指定する整数。

length 部分文字列の長さを指定する整数。

例: myDataColumn.Expression =「(電話、7、8) の部分文字列」

System_CAPS_noteメモ

リセットすることができます、 Expression null 値または空の文字列に割り当てることによりプロパティです。 塗りつぶされた以前のすべての行が後の既定値を割り当てられた既定値が式の列に設定されている場合、 Expression プロパティをリセットします。

次の例は、次の 3 つの列を作成、 DataTableです。 2 番目と 3 番目の列を含む式です。2 つ目が変数の税率を使用して税額を計算し、3 つ目は、最初の列の値に計算の結果を追加します。 結果のテーブルが表示される、 DataGrid コントロールです。

private void CalcColumns()
{
    DataTable table = new DataTable ();

    // Create the first column.
    DataColumn priceColumn = new DataColumn();
    priceColumn.DataType = System.Type.GetType("System.Decimal");
    priceColumn.ColumnName = "price";
    priceColumn.DefaultValue = 50;

    // Create the second, calculated, column.
    DataColumn taxColumn = new DataColumn();
    taxColumn.DataType = System.Type.GetType("System.Decimal");
    taxColumn.ColumnName = "tax";
    taxColumn.Expression = "price * 0.0862";

    // Create third column.
    DataColumn totalColumn = new DataColumn();
    totalColumn.DataType = System.Type.GetType("System.Decimal");
    totalColumn.ColumnName = "total";
    totalColumn.Expression = "price + tax";

    // Add columns to DataTable.
    table.Columns.Add(priceColumn);
    table.Columns.Add(taxColumn);
    table.Columns.Add(totalColumn);

    DataRow row = table.NewRow();
    table.Rows.Add(row);
    DataView view = new DataView(table);
    dataGrid1.DataSource = view;
}

.NET Framework
1.1 以降で使用可能
トップに戻る
表示: