Showing posts with label LINQ. Show all posts
Showing posts with label LINQ. Show all posts

Wednesday, March 29, 2017

Linq Example of Group-By

Group-By Example in Linq.

var groupByResult = 
    from p in db.Person
    join s in db.School
    on p.SchoolID = s.SchoolID
    group new { p, s } by new { p.SchoolID, s.SchoolName }
    into grp
    select new
    {
        Count     = grp.Count(),
        SchoolID  = grp.Key.SchoolID,
        SpaceName = grp.Key.SchoolName
    }

Tuesday, November 12, 2013

Iterating files in a folder based on file extensions using LINQ

Using LINQ, iterating through specific files based on file extensions in a directory can be somewhat simplified.


using System.Linq;
using System.IO;
...

string fileExtensions = ".pdf, .tif, .jpg, .bmp";
string [] fileExtensionArray = 
    fileExtensions.split(',').Select(e => e.Trim().ToLower()).ToArray();

DirectoryInfo di = new DirectoryInfo("C:\\myDir");
FileInfo[] fileInfoArray = 
    di.GetFiles()
        .Where(f => fileExtensionArray.Contains(f.Extension.ToLower()))
        .ToArray();
...
foreach( var item in fileInfoArray )
{
    string fileFullPath = item.FullName;
    // Perform your work with the desired file here.
}



Monday, October 28, 2013

Convert a DataTable Column into String Array

Suppose there is a single column DataTable with user names. In order to convert the data in this column into a string array you can do it in for-loop and LINQ approaches.


For-Loop approach:

int columnIndex = 0; //single-column DataTable
string[] userArr = new string[dt.Rows.Count];
for( int i = 0; i < dt.Rows.Count; i++)
{
    userArr[i] = dt.Rows[i][columnIndex].ToString();
}


LINQ approach 1:

int columnIndex = 0; // single-column DataTable
var userArr = dt.Rows.Cast()
                     .Select(row => row[columnIndex].ToString())
                     .ToArray();


LINQ approach 2:

int columnIndex = 0; // single-column DataTable
List userList = new List();
foreach( DataRow row in dt.Rows )
{
    userList.Add( row[columnIndex].ToString() );
}