0
    DataSet oDSetTest = new DataSet();
    DataTable oT2 = new DataTable();

    oT2.TableName = "Test";
    oT2.Columns.Add("ID", typeof(int));
    oT2.Columns.Add("Age", typeof(int));
    oT2.Columns.Add("Exp", typeof(int));
    oT2.Columns.Add("Data", typeof(string));

    oT2.PrimaryKey = new DataColumn[] { oT2.Columns["ID"] };
    oT2.AcceptChanges();

    oT2.Rows.Add(1, 25, 3,"<<AS>>");
    oT2.Rows.Add(2, 27, 6);
    oT2.Rows.Add(3, 25, 3, "BC");

    oDSetTest.Tables.Add(oT2);
    oDSetTest.AcceptChanges();

LINQ を使用して、それぞれ値「<」と「>」を使用して、データセットの「<<」と「">>」を置き換えたいと考えています。実際のシナリオでは 1000 行を超える行があるため、データセットをループしたくありません。

4

2 に答える 2

2

LINQ でループを回避することはできません。しかし、ここにLINQソリューションがあります:

var rowsToUpdate = from r in oT2.AsEnumerable()
                   let data = r.Field<string>("Data")
                   where data != null && 
                         (data.Contains("<<") || data.Contains(">>"))
                   select r;

foreach (var row in rowsToUpdate)
    row.SetField("Data", row.Field<string>("Data")
                            .Replace("<<", "&#60").Replace(">>", "&#62"));

また、LINQ はクエリ用であり、変更用ではないことに注意してください。変更するデータを選択するのに役立ちます。次に、ループを使用して、クエリによって選択されるデータを変更する必要があります。

于 2013-11-01T07:30:24.597 に答える