开发者

Dynamic data structures in C#

开发者 https://www.devze.com 2023-02-04 12:05 出处:网络
I have data in a database, and my code is accessing it using LINQ to Entities. I am writing some software where I need to be able to create a dynamic script. Clients may write the scripts, but it is

I have data in a database, and my code is accessing it using LINQ to Entities.

I am writing some software where I need to be able to create a dynamic script. Clients may write the scripts, but it is more likely that they will just modify them. The script will specify stuff like this,

Dataset data = GetDataset("table_name", "field = '1'");

if (data.Read())
{
    string field = data["field"];
    while (cway.Read())
    {
        // do some other stuff
    }
}

So that script above is going to read data from the database table called 'table_name' in the database into a list of some kind based on the filter I have specified 'field='1''. It is going to be reading particular fields and performing normal comparisons and calculations.

The most important thing is that this has to be dynamic. I can specify any table in our database, any filter and I then must be able to access any field.

I am using a script engine that means the script I am writing has to be written in C#. Datasets are outdated and I would rather keep away from them.

Just to re-iterate I am not really wanting to keep with the above format, and I can define any method I want to behind the scenes for my C# script to call. The above could end up like this for instance,

var data = GetData("table_name", "field = '1'");

while (data.ReadNext())
{
    var value = data.DynamicField;
}

Can I use reflection for instance, but perhaps t开发者_如何学JAVAhat would be too slow? Any ideas?


If you want to read dynamically a DataReader context, it's a pretty easy step:

ArrayList al = new ArrayList();
SqlDataReader dataReader = myCommand.ExecuteReader();

if (dataReader.HasRows)
{
   while (dataReader.Read())
   {
   string[] fields = new string[datareader.FieldCount];
   for (int i =0; i < datareader.FieldCount; ++i)
   {
      fields[i] = dataReader[i].ToString() ;
   }
   al.Add(fields);
   }

} This will return an array list composed by a dynamic object based on the number of field the reader has.

0

精彩评论

暂无评论...
验证码 换一张
取 消