|
■No60712 (ザキヤマ さん) に返信
> DataTableに"ID"と"TEXT"というカラムがあるとします。
ID は Integer 型、Text は String 型で
PrimaryKey は設定されていないという状況で良いですか?
> 今回、DataTable dtを、ID=1の行を、TEXTカラムの文字数でソートしたいのですが、そのようにすればよいでしょうか?
Linq 案は shu さんが既に書かれているので、「式列」を用いた場合を。
dt.Columns.Add("TextLength", GetType(Integer), "LEN(TEXT)")
Dim 案2() As DataRow = dt.Select("ID=1", "TextLength")
■No60713 (shu さん) に返信
> Dim rows = (From row In dt.AsEnumerable _
> Where row.Field(Of Integer)("ID") = 1 _
> Order By row.Field(Of String)("Text").Length).ToArray
TEXT が DBNull だった場合にも対応させるための別案として。
Dim 案1a() As DataRow = (From row In dt Where row!ID = 1 _
Order By row("TEXT").ToString().Length).ToArray()
Dim 案1b() As DataRow = (From row In dt Where row!ID = 1 _
Order By If(row.IsNull("TEXT"), Integer.MinValue, Len(row!TEXT))).ToArray()
案1a は、空文字列と DBNull を共に「長さゼロ」として並び替えます。
案1b は、DBNull を空文字列よりも短い文字列として並び替えます。
|