An open API service indexing awesome lists of open source software.

https://github.com/selcukgural/kangal

Kangal is extension library for data operations. Like DataReader, SqlConnection or DataTable.
https://github.com/selcukgural/kangal

csv data datareader datatable extension helper json list mssql xml

Last synced: about 2 months ago
JSON representation

Kangal is extension library for data operations. Like DataReader, SqlConnection or DataTable.

Awesome Lists containing this project

README

        

# Kangal ![Logo](https://github.com/selcukgural/Kangal/blob/master/Kangal/images/24x.png)

Kangal is `extension` library for data operations. Like `DataReader`, `SqlConnection` or `DataTable`.

The project has no dependence.

[Nuget library](https://www.nuget.org/packages/Kangal)


`Install-Package Kangal`

# Some Features
#### DataTable
In the `DataTable` records returns back as `IEnumerable`
```csharp
public static IEnumerable ToList(this DataTable dataTable) where T : new()
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var dataTable = new DataTable();
var reader = new SqlCommand(query, connection).ExecuteReader();
dataTable.Load(reader);
return dataTable.ToList();
}
```

`DataTable`'s content convert to **Csv** formatted string.
```csharp
public static string ToCsv(this DataTable dataTable, string comma = null,bool ignoreNull = false)
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var dataTable = new DataTable();
var reader = new SqlCommand(query, connection).ExecuteReader();
dataTable.Load(reader);
return dataTable.ToCsv("-", true);
}
```

`DataTable`'s content convert to `XDocument`.
```csharp
public static XDocument ToXDocument(this DataTable dataTable,XmlWriteMode xmlWriteMode = XmlWriteMode.IgnoreSchema,string nodeName = null,bool writeHierarchy = true)
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var dataTable = new DataTable();
var reader = new SqlCommand(query, connection).ExecuteReader();
dataTable.Load(reader);
return dataTable.ToXDocument(xmlWriteMode: XmlWriteMode.WriteSchema, nodeName: "persons",
writeHierarchy: false);
}
```

`DataTable`'s content convert to `Json`.
```csharp
public static string ToJson(this DataTable dataTable,JsonFormat jsonFormat = JsonFormat.Simple,JsonFormatSettings jsonFormatSettings = null)
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var dataTable = new DataTable();
var reader = new SqlCommand(query, connection).ExecuteReader();
dataTable.Load(reader);
return dataTable.ToJson(JsonFormat.Showy, new JsonFormatSettings("dd/MM/yyyy", "0:00.0"));
}
```

You can change `DataTable` column name.
```csharp
public static void ChangeColumnName(this DataTable dataTable, string currentColumnName, string newColumnName)
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var dataTable = new DataTable();
var reader = new SqlCommand(query, connection).ExecuteReader();
dataTable.Load(reader);
dataTable.ChangeColumnName("FirstName", "NickName");
}
```

You can remove `DataTable` column
```csharp
public static void RemoveColumn(this DataTable dataTable, string columnName)
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
var dataTable = new DataTable();
var reader = new SqlCommand(query, connection).ExecuteReader();
dataTable.Load(reader);
dataTable.RemoveColumn("FirstName");
}
```

#
#### SqlConnection

You can insert to **MSSQL** database to your `DataTable`
```csharp
Save(this SqlConnection connection, DataTable dataTable, string tableName,SqlTransaction transaction = null)
```
```csharp
var dataTable = new DataTable();
dataTable.Columns.Add("FirstName",typeof(string));
dataTable.Columns.Add("LastName", typeof(string));
dataTable.Columns.Add("Age", typeof(short));
dataTable.Rows.Add("selçuk", "güral", 35);
dataTable.Rows.Add("songül", "güral", 30);
dataTable.Rows.Add("zeynep sare", "güral", 1);
dataTable.AcceptChanges();

using (var connection = new SqlConnection(connectionString))
{
connection.Open();
return connection.Save(dataTable);
}
```

Save your **.Net POCO** objects
``` csharp
public static int Save(this SqlConnection connection, IEnumerable entities, SqlTransaction transaction = null, string tableName = null) where T : class
```
```csharp
var persons = new List
{
new Person("selçuk","güral",35),
new Person("songül","güral",30),
new Person("zeynep sare","güral",1)
};
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
return connection.Save(persons);
}
```

Getting sql query result and **object mapping**. Also you can use some useful **Attributes**. Like `ColumnAlias` and `Ignore`
```csharp
public static IEnumerable Get(this SqlConnection connection,string query) where T : class ,new ()
```
```csharp
public class Person
{
[ColumnAlias("FirstName")]
public string Name { get; set; }

[ColumnAlias("LastName")]
public string Surname { get; set; }

[Ignore]
public short Age { get; set; }

public Person()
{

}
public Person(string name,string surname,short age)
{
this.Name = name;
this.Surname = surname;
this.Age = age;
}
}

public static IEnumerable IDataReader_ToList()
{
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
return new SqlCommand(query, connection).ExecuteReader().ToList();
}
}
```
#
#### DataReader
You can convert `IDataReader` object to `IEnumerable`
```csharp
public static IEnumerable ToList(this IDataReader reader) where T :class, new()
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
return new SqlCommand(query, connection).ExecuteReader().ToList();
}
```

Also it is possible convert `IDataReader` object to `XDocument`
```csharp
public static XDocument ToXDocument(this IDataReader reader,string rootName,string nodeName)
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
return new SqlCommand(query, connection).ExecuteReader().ToXDocument("persons", "person");
}
```


In the records `IDataReader` object returns back as `IEnumerable`
```csharp
public static IEnumerable ToDataTable(this IDataReader reader)
```
```csharp
using (var connection = new SqlConnection(connectionString))
{
connection.Open();
return new SqlCommand(query, connection).ExecuteReader().ToDataTable();
}
```
#
#### List
The Generic `List` convert to `DataTable`
```csharp
public static DataTable ToDataTable(this IEnumerable entityList) where T : class
```
```csharp
return new List
{
new Person("selçuk", "güral", 35),
new Person("songül", "güral", 30),
new Person("zeynep sare", "güral", 1)
}.ToDataTable();
```


The Entities convert to `XDocument`.
```csharp
public static XDocument ToXDocument(this IEnumerable entities,string rootName) where T : class
```
```csharp
return new List
{
new Person("selçuk", "güral", 35),
new Person("songül", "güral", 30),
new Person("zeynep sare", "güral", 1)
}.ToXDocument("persons");
```