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.
- Host: GitHub
- URL: https://github.com/selcukgural/kangal
- Owner: selcukgural
- License: gpl-3.0
- Created: 2016-08-09T14:52:19.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2024-01-16T20:06:16.000Z (over 1 year ago)
- Last Synced: 2025-04-16T01:56:58.103Z (about 2 months ago)
- Topics: csv, data, datareader, datatable, extension, helper, json, list, mssql, xml
- Language: C#
- Homepage: https://www.selcukgural.com
- Size: 126 KB
- Stars: 4
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Kangal 
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");
}
```#
#### SqlConnectionYou 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");
```