.NET C# Generic List changing data inside a list member not working as expected and a work around.

OK so this is a very weird problem. I spent hours debugging this one. Basically the problem is as follows:

You have generic list like this one:

List<Genome> Genomes;

You access a member object inside the list and use a member setter to change a value inside the object:

for (int gen = 0; gen < this.Genomes.Length; ++gen)
{
this.Genomes[gen].SetFitness(FitnessScores[gen]);
}

You would expect this to work. All it does is takes a integer number from a list of values and passes it to be set into the desired chld object in a generic list. This simply did not work.

What I found out was that I was adding a genome for the list above to another list to have a connection to this genome:

this.Species[spc].AddMember(this.Genomes[gen]);

Later I would create a new list of genomes:

List<Genome> NewGenomes;

Add new members to the list:

Genome baby = null; // And do something with the baby object

NewPop[currentNewGenomeIndex]= baby;

NOTICE: The baby was populated either through an algorithmic logic which took a pre-existing genome from the species list above or created a new one a crossover between two existing genomes in the species list.

Now here where the problem was. Something is happening in adding and getting object from the species list using existing object of same type from the genomes list. Then later when I create a new list of genomes I simply just replace the current list of genomes with the new population of genomes.

this.Genomes = NewGenomes;

This caused weird behaviour when I was trying to access a object member from the Genomes list above. For starters I would only be able to access only one object which was one and the same for the entire list. Other weird behaviour was when I was trying to loop through the members in the genomes list I was able to modify the values but once I left the loop the data was all wrong again.

Anyway very weird. What I did was simply to quickly fix it was to create an array instead of a generic list. This fixed it. And no using the generic list member function ToArray() did not help either. There was still some weird references going on. Sample of the fix:

Genome[] Genomes;

NewPop[currentNewGenomeIndex]= baby;

(I’m lazy here, please forgive me :), I assume that you know arrays and how to use them as with C#)

Something clearly is happening between two generic lists sharing the same object data.

Not sure even now what is really going on. Anyway using an Array should be more effective than using generic lists, performance wise. Although generic lists do offer flexibility in objects creation and management.

Advertisements

SQLite Entity Data Model (EDMX) with Entity Framework – Guide

This was a bit tricky for me but these are the steps I took for Visual Studio 2013 Community Edition. Notice that the order is important, especially you should not create the Visual Studio project before the SQLite conenction in Server Explorer is established. For some reason existing VS project wont’t recognize the connection, well at least in my environement.

  1. Download the proper SQLite setup bundle based on your criteria in your environment: http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
    1. You Visual Studio version
    2. Your Visual Studio target CPU 32bit or 64bit
    3. Your .NET version which you wish to use
  2. Install the setup bundle
    1. Make sure to enable Visual Studio integration and GAC registration during installation.
  3. Once installed open Visual Studio and Server Explorer
  4. From here you should see a new data source named System.Data.SQLite Database File when you create a new connection
  5. In the next windows select your SQLite database file and press OK.
  6. After this your should have a valid connection to your SQLite database file
  7. Next create a new Visual Studio Project.
  8. Add new Nuget Packages
    1. Entity Framework
    2. System.Data.SQLite (x86/x64)
  9. You could build your project at this stage.
  10. After all these steps your should be able to generate an Entity Data Model on your SQLite database based on the Server Explorer connection

 

Other sources of information:

http://erikej.blogspot.fi/2014/11/using-sqlite-with-entity-framework-6.html

https://visualstudiogallery.msdn.microsoft.com/0e313dfd-be80-4afb-b5e9-6e74d369f7a1

Lessons learned from WebAPI and MVC Implementations

My Notes on a painful journey to learn, make and publish a Azure hosted MVC, Sinlge-Page application, Android client app and a WebAPI working with-one another. Software technology can be real pain in the ass!!!

JSON and Self referencing loop

If you get the following error:

Self referencing loop detected for property ‘your model’ with type ‘System.Data.Entity.DynamicProxies

Solution:

Loop Reference handling in Web API

My Solution:

I used [JsonIgnore] attribute to tell the proper inheritance to JSON serialization.

using Newtonsoft.Json;

public partial class Set
{
public Set()
{
this.Exercises = new HashSet<Exercise>();
}

public long Id { get; set; }
public string Name { get; set; }
public string UserId { get; set; }

public virtual ICollection<Exercise> Exercises { get; set; }
}

public partial class ExerciseRecord
{
public long Id { get; set; }
public double Record { get; set; }
public System.DateTime Date { get; set; }
public System.DateTime StartDate { get; set; }
public System.DateTime EndDate { get; set; }
public long ExerciseId { get; set; }

[JsonIgnore]
public virtual Exercise Exercise { get; set; }
}

public partial class Exercise
{
public Exercise()
{
this.ExerciseAttributes = new HashSet<ExerciseAttribute>();
this.ExerciseRecords = new HashSet<ExerciseRecord>();
}

public long Id { get; set; }
public string Name { get; set; }
public double Target { get; set; }
public long SetId { get; set; }
[JsonIgnore]
public virtual Set Set { get; set; }
public virtual ICollection<ExerciseAttribute> ExerciseAttributes { get; set; }
public virtual ICollection<ExerciseRecord> ExerciseRecords { get; set; }
}

 

MVC loads older script files

This is due to browser script caching. The easiest solution for this is to set the browser which you are using to debug to retrieve the newest versions of web page content on each time you visit a webpage.

Missing Key definition from Model when creating a controller

You might get an error like this: EntityType ‘your type’ has no key defined. Define the key for this EntityType.

To fix such problems simply add this namespace definitions:

using System.ComponentModel.DataAnnotations;

And then define in your data model a key like this:

public class ColumnDataHighChart
{
[Key]
public int ID { get; set; }
public String Title { get; set; }
public String SubTitle { get; set; }
public IList<String> xAxisCategories { get; set; }
public String yAxisTitle { get; set; }
public IList<SeriesDataHighChart> Series { get; set; }

}

 

Intercepting web requests

 

I have two ways of doing this:

  1. A delegation handler
  2. Or an action filter for a controller.

Delegation handler

DelegatingHandler Class

Sample code:

public class AuthHandler : DelegatingHandler
{
protected async override Task<HttpResponseMessage> SendAsync(
HttpRequestMessage request, CancellationToken cancellationToken)
{
// Call the inner handler.
var response = await base.SendAsync(request, cancellationToken);
return response;
}
}

Action filter for a controlle

Notice that for MVC and Web API there are two different sets of action filter definitions:

http://msdn.microsoft.com/en-us/library/system.web.http.filters.actionfilterattribute(v=vs.118).aspx

http://msdn.microsoft.com/en-us/library/system.web.mvc.actionfilterattribute(v=vs.118).aspx

MVC Sample:

public class AuthenticationActionFilterHelper : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (HttpContext.Current != null && HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
if (SessionHelper.LoggedInUser<AspNetUser>(HttpContext.Current.User.Identity.Name) == null)
{
//SessionHelper.UserSessionID = user.Id;
AspNetUsersController aspUserCon = new AspNetUsersController();
var sessionUser = aspUserCon.GetUser(HttpContext.Current.User.Identity.Name);
//SessionHelper.UserSessionID = user.UserName;
SessionHelper.LoggedInUser<AspNetUser>(sessionUser, sessionUser.UserName);
}
}
}

}

WebAPI Sample:

public class AuthenticationActionFilterHelper : ActionFilterAttribute
{
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext)
{
base.OnActionExecuted(actionExecutedContext);
}

public override System.Threading.Tasks.Task OnActionExecutedAsync(HttpActionExecutedContext actionExecutedContext, System.Threading.CancellationToken cancellationToken)
{
return base.OnActionExecutedAsync(actionExecutedContext, cancellationToken);
}

public override void OnActionExecuting(HttpActionContext actionContext)
{
base.OnActionExecuting(actionContext);
if (HttpContext.Current != null && HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated)
{
if (SessionHelper.LoggedInUser<AspNetUser>(HttpContext.Current.User.Identity.Name) == null)
{
//SessionHelper.UserSessionID = user.Id;
AspNetUsersController aspUserCon = new AspNetUsersController();
var sessionUser = aspUserCon.GetUser(HttpContext.Current.User.Identity.Name);
//SessionHelper.UserSessionID = user.UserName;
SessionHelper.LoggedInUser<AspNetUser>(sessionUser, sessionUser.UserName);
}
}
}

public override System.Threading.Tasks.Task OnActionExecutingAsync(HttpActionContext actionContext, System.Threading.CancellationToken cancellationToken)
{
return base.OnActionExecutingAsync(actionContext, cancellationToken);
}
}

 

Lambda Expression “Magic” 🙂

Retrieve distinct parent from child elements

As the title suggests I needed to retrieve the parent from a multilevel data set:

 

First I needed to get the child elements and in this exmaple it is assumed that you have the child elements retrieved.

Once you have the child elements it is time to get the distinct parent elements. for this I needed a way to group the distinct parent from the child elements. Here are my steps:

  • Get child elements:

ExerciseRecordsController exerciseRecordsController = new ExerciseRecordsController();
var exerciseRecordsData = exerciseRecordsController.GetExerciseRecords().Where(er => er.Date > startDate && er.Date < endDate && er.Exercise.Set.UserId.ToLower().CompareTo(this.user.Id.ToLower()) == 0);

  • Define a custom extension named “DistinctBy”

public static class LambdaExtensions
{
public static IEnumerable<t> DistinctBy<t>(this IEnumerable<t> list, Func<t, object> propertySelector)
{
return list.GroupBy(propertySelector).Select(x => x.First());
}
} Original code from: http://www.elevenwinds.com/linq-distinctby-with-lambda-expression-parameter

  • Apply the new extension on the data set

var setsData = exerciseRecordsData.DistinctBy(o => o.Exercise.SetId).Select( o => o.Exercise.Set);

How to create/populate a collection with data with an unknown data type

You may ask yourself why would anyone needs this? Well I do not why would others needs this but I came into a situation where I needed this.

I had a solution where I needed to be able to create data from a back-end server WebAPI to a JS HighCharts JS library without knowing what kind of data I would be processing, also I wanted to have the possibility to extend the back-end code so that it can return any kind of data to the client and let the client figure out what to do with the data.

So how to do this?

In a human language it goes something like this: Use LINQ in your code to go through the data set, select your data and return it as and array of objects, then create a new collection by passing to the constructor your processed data as an array of objects. Ofcourse your collection must store objects as well. The data type information is going to be stored because every class in C# is a descendant of the Object class.

public class SeriesDataHighChart
{
[Key]
public long ID { get; set; }
public String Name { get; set; }
public IList<object> Data { get; set; }
}

 

// One series corresponds to one set and data for each month
SeriesDataHighChart seriesData = new SeriesDataHighChart();

seriesData.ID = chartSet.Id;
seriesData.Name = chartSet.Name;
var seriesMonthsActivityCountData = (from monthActivityCount in chartSet.ChartSetMonthsData
select new object[] { monthActivityCount.ActivityCount as object });
seriesData.Data = new List<object>(seriesMonthsActivityCountData.ToArray());

hsData.Series.Add(seriesData);

 

You could also return an array of more complex object such as a key value pairs:

var sd = from d in unparsedData
select new object[] { d.Key as object, d.Value as object };

newSeries.Data = new Data(sd.ToArray());

Avoiding “Sequence contains no elements” exception in object initializers

If you have something like this in your code:

chartExercise.ChatMonthsData.Add(new ChartExerciseMonthData
{
ActivityCount = exercise.ExerciseRecords.Where(m => m.Date.Month == month && m.Date >= startDate && m.Date <= endDate).Count(),
StartDate = DateTime.Now.StartOfMonth(month),
EndDate = DateTime.Now.EndOfMonth(month),
MonthRecordAverage = exercise.ExerciseRecords.Where(m => m.Date.Month == month && m.Date >= startDate && m.Date <= endDate).Average(a => a.Record)

});

 

The Average lambda expression will throw the above exception error message because the Where clause may return Zero elements back(Notice that for example the Count expression will not throw a similar exception).

To fix(go around the problem, yes there might be other solutions but this was mine at the moment 🙂 ) I created an anonymous function that checks if there are elements returned by the clause and only then perform the Average operation on the elements. The solution is highlighted with the green color.

chartExercise.ChatMonthsData.Add(new ChartExerciseMonthData
{
ActivityCount = exercise.ExerciseRecords.Where(m => m.Date.Month == month && m.Date >= startDate && m.Date <= endDate).Count(),
StartDate = DateTime.Now.StartOfMonth(month),
EndDate = DateTime.Now.EndOfMonth(month),
MonthRecordAverage = new Func<double>(() => {
double averageRecord = 0;
var exerciseRecordByDateRange = exercise.ExerciseRecords.Where(m => m.Date.Month == month && m.Date >= startDate && m.Date <= endDate);
if (exerciseRecordByDateRange.Count() > 0)
averageRecord = exerciseRecordByDateRange.Average(a => a.Record);

return (averageRecord);
})()
});

 Get the count for a complex data structure/hierarchy, tree like

A rather simple implementation, choose to retrieve any records inside your main records set with a where:

set.Exercises.Where(o => o.ExerciseRecords.Any(m => m.Date.Month == month)).Count()

Update Azure SQL Database via SQL Server management studio and Generated scripts

  1. Mouse second button on database > Taskas > Generate Scripts > Choose your objects (Chose objects view) > Select “Advanced” button, then in the “Script for the database engine type” select option Windows Azure SQL Database
  2. Next open the database connection with management studio to your Azure SQL Database.
  3. Create a new empty database
  4. Open a new query windows and simply add the generated script to this window and run the script against the new empty database. This will create the structure and data if you selected so.

After deploying your WebAPI you get a following error when accessing your database data “There is already an open DataReader associated with this Command which must be closed first.”

To fix this error simply add the following to your connection strings used in your web api in Azure MultipleActiveResultSets=true.

Enable WebAPI Cross-Origin Resource Sharing (CORS)

You might run into problems after deploying your WebAPI to Azure and trying to access your api from different origins. Here is a solution:

http://www.codeproject.com/Articles/742532/Using-Web-API-Individual-User-Account-plus-CORS-En

Summary of the article above: Install the following nuget package in your WebAPI project: Microsoft.AspNet.WebApi.Cors

In your webapiconfig add the following(in green):

public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Configure Web API to use only bearer token authentication.
config.SuppressDefaultHostAuthentication();
config.Filters.Add(new HostAuthenticationFilter(OAuthDefaults.AuthenticationType));

var cors = new EnableCorsAttribute(“*”, “*”, “*”);
config.EnableCors(cors);

// Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
name: “DefaultApi”,
routeTemplate: “api/{controller}/{id}”,
defaults: new { id = RouteParameter.Optional }
);

config.MessageHandlers.Add(new Handler.AuthHandler());
}
}

Next add the following to your ApplicationOAuthProvider.GrantResourceOwnerCredentials function:

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
context.OwinContext.Response.Headers.Add(“Access-Control-Allow-Origin”, new[] { “*” });
var userManager = context.OwinContext.GetUserManager<ApplicationUserManager>();

ApplicationUser user = await userManager.FindAsync(context.UserName, context.Password);
//SessionHelper.UserSessionID = user.Id;
AspNetUsersController aspUserCon = new AspNetUsersController();
var sessionUser = aspUserCon.GetUser(user.Id);
//SessionHelper.UserSessionID = user.UserName;
SessionHelper.LoggedInUser<AspNetUser>(sessionUser, user.UserName);
if (user == null)
{
context.SetError(“invalid_grant”, “The user name or password is incorrect.”);
return;
}

ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager,
OAuthDefaults.AuthenticationType);
ClaimsIdentity cookiesIdentity = await user.GenerateUserIdentityAsync(userManager,
CookieAuthenticationDefaults.AuthenticationType);

AuthenticationProperties properties = CreateProperties(user.UserName);
AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
context.Validated(ticket);
context.Request.Context.Authentication.SignIn(cookiesIdentity);

}

Notice that these changes may have undesired effects. Find out if these are suitable to your needs.

Good to Know: Windows Azure and Web Services functionality

Hi,

Here is my knowledge source listing for Windows Azure and Web Services functionality. Hope it helps someone:

Accessing Data
ADO.NET http://msdn.microsoft.com/en-us/library/e80y5yhx(v=vs.110).aspx
.NET Framework Data Providers http://msdn.microsoft.com/en-us/library/a6cd7c08(v=vs.110).aspx
ADO.NET Entity Data Model Designer http://msdn.microsoft.com/en-us/library/vstudio/cc716685(v=vs.100).aspx
ADO.NET Entity Data Model Designer http://msdn.microsoft.com/en-us/library/vstudio/cc716685(v=vs.100).aspx
ADO.NET Entity Data Model Tools http://msdn.microsoft.com/en-us/library/vstudio/bb399249(v=vs.100).aspx
Advanced using OData in .NET: WCF Data Services http://www.codeproject.com/Articles/135490/Advanced-using-OData-in-NET-WCF-Data-Services
ASP.NET Application State Overview http://msdn.microsoft.com/en-us/library/ms178594.aspx
ASP.NET Session State Overview http://msdn.microsoft.com/en-us/library/ms178581.aspx
CacheDependency Class http://msdn.microsoft.com/en-us/library/system.web.caching.cachedependency.aspx
CacheItemPolicy Class http://msdn.microsoft.com/en-us/library/system.runtime.caching.cacheitempolicy(v=vs.110).aspx
CacheItemPriority Enumeration http://msdn.microsoft.com/en-us/library/system.web.caching.cacheitempriority.aspx
ChangeMonitor Class http://msdn.microsoft.com/en-us/library/system.runtime.caching.changemonitor(v=vs.110).aspx
Code First to an Existing Database http://msdn.microsoft.com/en-us/data/jj200620.aspx
CommandType Enumeration http://msdn.microsoft.com/en-us/library/system.data.commandtype(v=vs.110).aspx
Configuring Parameters and Parameter Data Types http://msdn.microsoft.com/en-us/library/yy6y35y8(v=vs.110).aspx
Create Database Wizard (Master Data Services Configuration Manager) http://technet.microsoft.com/en-us/library/ee633799.aspx
DataAdapter Class http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.aspx
DataAdapter.AcceptChangesDuringFill Property http://msdn.microsoft.com/en-us/library/system.data.common.dataadapter.acceptchangesduringfill(v=vs.110).aspx
DataContractAttribute Class http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute.aspx
DataSet Class http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx
DataSet Class http://msdn.microsoft.com/en-us/library/system.data.dataset.aspx
DataTable Class http://msdn.microsoft.com/en-us/library/system.data.datatable.aspx
DbContext Class http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext(v=vs.113).aspx
DBContext vs ObjectContexts http://www.entityframeworktutorial.net/EntityFramework4.3/dbcontext-vs-objectcontext.aspx
DbContext.SaveChanges Method http://msdn.microsoft.com/en-us/library/system.data.entity.dbcontext.savechanges(v=vs.113).aspx
DbContext.Set<TEntity> Method http://msdn.microsoft.com/en-us/library/gg696521(v=vs.113).aspx
DbDataAdapter.Fill Method (DataSet) http://msdn.microsoft.com/en-us/library/zxkb3c3d(v=vs.110).aspx
DbDataAdapter.Update Method (DataSet) http://msdn.microsoft.com/en-us/library/at8a576f(v=vs.110).aspx
Demystifying Entity Framework Strategies: Loading Related Data (Eager Loading,  Lazy Loading, Explicitly Loading) http://msdn.microsoft.com/en-us/magazine/hh205756.aspx
EdmEntityTypeAttribute Class http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.edmentitytypeattribute(v=vs.110).aspx
EF Designer TPT Inheritance http://msdn.microsoft.com/en-us/data/jj618293.aspx
Entity Data Model Wizard http://msdn.microsoft.com/en-us/library/vstudio/bb399247(v=vs.100).aspx
Entity Framework http://msdn.microsoft.com/en-US/data/ef
Entity Framework – Database First http://msdn.microsoft.com/en-us/data/jj206878.aspx
Entity Framework (EF) Documentation http://msdn.microsoft.com/en-us/data/ee712907.aspx
Entity Framework 5: Controlling automatic query compilation http://blogs.msdn.com/b/stuartleeks/archive/2012/06/12/entity-framework-5-controlling-automatic-query-compilation.aspx
Entity Framework- Code First to a New Database http://msdn.microsoft.com/en-us/data/jj193542.aspx
EntityCommand Class http://msdn.microsoft.com/en-us/library/system.data.entityclient.entitycommand.aspx
EntityConnection Class http://msdn.microsoft.com/en-us/library/system.data.entityclient.entityconnection(v=vs.110).aspx
EntityObject Class http://msdn.microsoft.com/en-us/library/system.data.objects.dataclasses.entityobject(v=vs.110).aspx
EntityTransaction Class http://msdn.microsoft.com/en-us/library/system.data.entityclient.entitytransaction.aspx
How to: Use Lazy Loading to Load Related Objects http://msdn.microsoft.com/en-us/library/vstudio/dd456846(v=vs.100).aspx
HttpContext.Cache Property http://msdn.microsoft.com/en-us/library/system.web.httpcontext.cache(v=vs.110).aspx
Improve Performance with Entity Framework 5 http://devproconnections.com/entity-framework/improve-performance-entity-framework-5
IsolationLevel Enumeration http://msdn.microsoft.com/en-us/library/system.data.isolationlevel.aspx
LINQ (Language-Integrated Query) http://msdn.microsoft.com/en-us/library/bb397926.aspx
LINQ to Entities: Basic Concepts and Features http://www.codeproject.com/Articles/246861/LINQ-to-Entities-Basic-Concepts-and-Features
LINQ to Objects http://msdn.microsoft.com/en-us/library/bb397919.aspx
LINQ to XML [from BPUEDev11] http://msdn.microsoft.com/en-us/library/bb387098.aspx
LINQ to XML Overview http://msdn.microsoft.com/en-us/library/bb387061.aspx
Loading Related Entities (Eager Loading,  Lazy Loading, Explicitly Loading) http://msdn.microsoft.com/en-us/data/jj574232.aspx
Model-First in the Entity Framework 4 http://msdn.microsoft.com/en-us/data/ff830362.aspx
ObjectCache Class http://msdn.microsoft.com/en-us/library/vstudio/system.runtime.caching.objectcache
ObjectContext Class http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext(v=vs.110).aspx
ObjectContext management http://msdn.microsoft.com/en-us/library/system.data.objects.objectcontext.contextoptions(v=vs.110).aspx
ObjectQuery Class http://msdn.microsoft.com/en-us/library/system.data.objects.objectquery(v=vs.110).aspx
ObjectQuery.ToTraceString Method http://msdn.microsoft.com/en-us/library/system.data.objects.objectquery.totracestring(v=vs.110).aspx
ObjectQuery<T> Class http://msdn.microsoft.com/en-us/library/bb345303(v=vs.110).aspx
Object-relational impedance mismatch http://en.wikipedia.org/wiki/Object-Relational_impedance_mismatch
OData protocol http://www.odata.org/
Open Data Protocol by Example http://msdn.microsoft.com/en-us/library/ff478141.aspx
Plain Old CLR Object(POCO) http://en.wikipedia.org/wiki/Plain_Old_CLR_Object
Precompiling LINQ Queries http://msdn.microsoft.com/en-us/magazine/ee336024.aspx
Queries in LINQ to Entities http://msdn.microsoft.com/en-us/library/vstudio/bb399367(v=vs.100).aspx
Relational database management system http://en.wikipedia.org/wiki/Relational_database_management_system
Retrieving Data Using a DataReader http://msdn.microsoft.com/en-us/library/haa3afyz(v=vs.110).aspx
SerializableAttribute Class http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx
SQL Server Connection Pooling (ADO.NET) http://msdn.microsoft.com/en-us/library/vstudio/8xx3tyca%28v%3Dvs.100%29
SqlCommand Class http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.aspx
SqlCommand.CommandText Property http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.commandtext(v=vs.110).aspx
SqlCommand.ExecuteReader Method http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executereader(v=vs.110).aspx
SqlCommand.ExecuteScalar Method http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlcommand.executescalar(v=vs.110).aspx
SqlConnection Class http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.aspx
SqlConnectionStringBuilder Class http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnectionstringbuilder.aspx
SqlDataAdapter Class http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldataadapter.aspx
SqlDataReader Class http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx
SqlDataReader.Read Method http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.read.aspx
SqlParameter Class http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlparameter.aspx
SqlTransaction Class http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqltransaction.aspx
System.Data.EntityClient Namespace http://msdn.microsoft.com/en-us/library/system.data.entityclient(v=vs.110).aspx
System.Data.SqlClient Namespace http://msdn.microsoft.com/en-us/library/System.Data.SqlClient(v=vs.110).aspx
System.Transactions Namespace http://msdn.microsoft.com/en-us/library/system.transactions.aspx
System.Xml Namespaces http://msdn.microsoft.com/en-us/library/gg145036(v=vs.110).aspx
Table-per-Type vs Table-per-Hierarchy Inheritance http://blog.devart.com/table-per-type-vs-table-per-hierarchy-inheritance.html
The ADO.NET Entity Framework Overview http://msdn.microsoft.com/en-us/library/aa697427(v=vs.80).aspx
TransactionScope Class http://msdn.microsoft.com/en-us/library/system.transactions.transactionscope.aspx
Understanding ASP.NET View State http://msdn.microsoft.com/en-us/library/ms972976.aspx
Understanding Service-Oriented Architecture http://msdn.microsoft.com/en-us/library/aa480021.aspx
Update Model Wizard (Entity Data Model Tools) http://msdn.microsoft.com/en-us/library/vstudio/cc716705(v=vs.100).aspx
Using the DbContext API http://msdn.microsoft.com/en-us/data/gg192989.aspx
Using the REST Interface http://msdn.microsoft.com/en-us/library/ff798339.aspx
Walkthrough: Mapping Table-per-Hierarchy Inheritance in Dynamic Data http://msdn.microsoft.com/en-us/library/dd793152.ASPX
WCF Data Services 4.5 http://msdn.microsoft.com/en-us/library/cc668792(v=vs.110).aspx
WCF Data Services Overview http://msdn.microsoft.com/en-us/library/cc668794(v=vs.110).aspx
Working with Datasets in Visual Studio http://msdn.microsoft.com/en-us/library/8bw9ksd6%28v%3Dvs.110%29.aspx
Working with POCO Entities http://msdn.microsoft.com/en-us/library/vstudio/dd456853(v=vs.100).aspx
XElement Class http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement.aspx
XML Documents and Data http://msdn.microsoft.com/en-us/library/2bcctyt8(v=vs.110).aspx
XmlDocument Class http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx
XmlReader Class http://msdn.microsoft.com/en-us/library/vstudio/system.xml.xmlreader
XmlWriter Class http://msdn.microsoft.com/en-us/library/system.xml.xmlwriter.aspx
XPath Examples http://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx
Designing and implementing WCF Services – Create, Configure, Secure, Consume
<basicHttpBinding> http://msdn.microsoft.com/en-us/library/ms731361(v=vs.110).aspx
<bindings> http://msdn.microsoft.com/en-us/library/ms731399(v=vs.110).aspx
<mexHttpBinding> http://msdn.microsoft.com/en-us/library/aa967390(v=vs.110).aspx
<mexHttpsBinding> http://msdn.microsoft.com/en-us/library/aa967391(v=vs.110).aspx
<mexNamedPipeBinding> http://msdn.microsoft.com/en-us/library/aa967280(v=vs.110).aspx
<netMsmqBinding> http://msdn.microsoft.com/en-us/library/ms731380(v=vs.110).aspx
<protocolMapping> http://msdn.microsoft.com/en-us/library/ee816881(v=vs.110).aspx
<wsHttpBinding> http://msdn.microsoft.com/en-us/library/ms731299(v=vs.110).aspx
Accessing Services Using a WCF Client http://msdn.microsoft.com/en-us/library/ms734691(v=vs.110).aspx
Azure Service Bus http://azure.microsoft.com/en-us/documentation/articles/fundamentals-service-bus-hybrid-solutions/
Basic [WCF Samples] http://msdn.microsoft.com/en-us/library/dd699756(v=vs.110).aspx
BasicHttpBinding Class http://msdn.microsoft.com/en-us/library/system.servicemodel.basichttpbinding(v=vs.110).aspx
BinaryMessageEncodingBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.binarymessageencodingbindingelement(v=vs.110).aspx
Binding [WCF Samples] http://msdn.microsoft.com/en-us/library/dd699760(v=vs.110).aspx
Chapter 7: Message and Transport Security http://msdn.microsoft.com/en-us/library/ff648863.aspx
Choosing a Message Exchange Pattern http://msdn.microsoft.com/en-us/library/aa751829(v=vs.110).aspx
CompositeDuplexBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.compositeduplexbindingelement(v=vs.110).aspx
Configuration Editor Tool (SvcConfigEditor.exe) http://msdn.microsoft.com/en-us/library/ms732009(v=vs.110).aspx
Configuring Services Using Configuration Files http://msdn.microsoft.com/en-us/library/ms733932(v=vs.110).aspx
Creating the Web Service Proxy http://msdn.microsoft.com/en-us/library/ms155134.aspx
Custom Binding Samples http://msdn.microsoft.com/en-us/library/vstudio/ms751479(v=vs.90).aspx
Custom Bindings http://msdn.microsoft.com/en-us/library/aa347793(v=vs.110).aspx
Data Contract Known Types http://msdn.microsoft.com/en-us/library/ms730167(v=vs.110).aspx
DataContractAttribute Class http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datacontractattribute(v=vs.110).aspx
DataMemberAttribute Class http://msdn.microsoft.com/en-us/library/system.runtime.serialization.datamemberattribute(v=vs.110).aspx
Difference between BasicHttpBinding and WsHttpBinding http://www.codeproject.com/Articles/36396/Difference-between-BasicHttpBinding-and-WsHttpBind
Endpoints: Addresses, Bindings, and Contracts http://msdn.microsoft.com/en-us/library/ms733107(v=vs.110).aspx
EnumMemberAttribute Class http://msdn.microsoft.com/en-us/library/system.runtime.serialization.enummemberattribute(v=vs.110).aspx
Extending Dispatchers http://msdn.microsoft.com/en-us/library/ms734665.aspx
Extensibility [WCF Samples] http://msdn.microsoft.com/en-us/library/dd699779(v=vs.110).aspx
Fault Contract http://msdn.microsoft.com/en-us/library/ms752208(v=vs.110).aspx
Fault Contract – Handling Errors in WCF and A Very Simple WCF Service Implementation http://www.codeproject.com/Articles/376303/Fault-Contract-Handling-Errors-in-WCF-and-A-Very-S
Getting Started Tutorial http://msdn.microsoft.com/en-us/library/ms734712(v=vs.110).aspx
Host WCF in an Azure worker role (CSAzureWCFWorkerRole) https://code.msdn.microsoft.com/windowsazure/CSAzureWCFWorkerRole-38b4e51d
Hosting WCF Services http://www.codemag.com/Article/0701041
How to: Create a Transactional Service http://msdn.microsoft.com/en-us/library/ms730232(v=vs.110).aspx
How to: Create a Windows Communication Foundation Client http://msdn.microsoft.com/en-us/library/ms733133(v=vs.110).aspx
How to: Expose a Metadata Endpoint http://msdn.microsoft.com/en-us/library/azure/ee706721.aspx
How to: Implement a Windows Communication Foundation Service Contract http://msdn.microsoft.com/en-us/library/ms734686(v=vs.110).aspx
How to: Inspect or Modify Messages on the Client http://msdn.microsoft.com/en-us/library/ms733786(v=vs.110).aspx
How to: Set the Security Mode http://msdn.microsoft.com/en-us/library/ms731884(v=vs.110).aspx
How to: Use the ChannelFactory http://msdn.microsoft.com/en-us/library/ms734681(v=vs.110).aspx
IClientMessageInspector Interface http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.iclientmessageinspector(v=vs.110).aspx
IDispatchMessageInspector Interface http://msdn.microsoft.com/en-us/library/system.servicemodel.dispatcher.idispatchmessageinspector(v=vs.110).aspx
KnownTypeAttribute Class http://msdn.microsoft.com/en-us/library/system.runtime.serialization.knowntypeattribute(v=vs.110).aspx
Message Inspectors http://msdn.microsoft.com/en-us/library/aa717047(v=vs.110).aspx
Message Patterns in WCF Services http://msdn.microsoft.com/en-us/library/ff395349.aspx
Message Security in WCF http://msdn.microsoft.com/en-us/library/ms733137(v=vs.110).aspx
MetadataExchangeBindings Class http://msdn.microsoft.com/en-us/library/System.ServiceModel.Description.MetadataExchangeBindings(v=vs.110).aspx
MtomMessageEncodingBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.mtommessageencodingbindingelement(v=vs.110).aspx
NetMsmqBinding Class http://msdn.microsoft.com/en-us/library/system.servicemodel.netmsmqbinding(v=vs.110).aspx
NetNamedPipeBinding Class http://msdn.microsoft.com/en-us/library/system.servicemodel.netnamedpipebinding(v=vs.110).aspx
OneWayBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.onewaybindingelement(v=vs.110).aspx
OperationBehaviorAttribute Class http://msdn.microsoft.com/en-us/library/system.servicemodel.operationbehaviorattribute(v=vs.110).aspx
OperationContractAttribute Class http://msdn.microsoft.com/en-us/library/system.servicemodel.operationcontractattribute(v=vs.110).aspx
Programming WCF Security http://msdn.microsoft.com/en-us/library/ms731925(v=vs.110).aspx
Publishing Metadata http://msdn.microsoft.com/en-us/library/aa751951(v=vs.110).aspx
Reliable Sessions Overview http://msdn.microsoft.com/en-us/library/ms733136.aspx
ReliableSessionBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.reliablesessionbindingelement(v=vs.110).aspx
Scenario [WCF Samples] http://msdn.microsoft.com/en-us/library/dd699770(v=vs.110).aspx
Securing and Authenticating a Service Bus Connection http://msdn.microsoft.com/library/azure/dd582773.aspx
SecurityBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.securitybindingelement(v=vs.110).aspx
Service Bus Bindings http://msdn.microsoft.com/library/azure/hh410102.aspx
Service Bus Queues, Topics, and Subscriptions http://msdn.microsoft.com/library/azure/hh367516.aspx
ServiceBehaviorAttribute Class http://msdn.microsoft.com/en-us/library/system.servicemodel.servicebehaviorattribute(v=vs.110).aspx
ServiceContractAttribute Class http://msdn.microsoft.com/en-us/library/system.servicemodel.servicecontractattribute(v=vs.110).aspx
ServiceHost Class http://msdn.microsoft.com/en-us/library/system.servicemodel.servicehost(v=vs.110).aspx
ServiceModel Metadata Utility Tool (Svcutil.exe) http://msdn.microsoft.com/en-us/library/aa347733(v=vs.110).aspx
Sessions, Instancing, and Concurrency http://msdn.microsoft.com/en-us/library/ms731193(v=vs.110).aspx
Simplified Configuration http://msdn.microsoft.com/en-us/library/ee358768(v=vs.110).aspx
Simplified Configuration for WCF Services http://msdn.microsoft.com/en-us/library/ee530014(v=vs.110).aspx
SslStreamSecurityBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.sslstreamsecuritybindingelement(v=vs.110).aspx
Status codes http://www.w3.org/Protocols/HTTP/HTRESP.html
System-Provided Bindings http://msdn.microsoft.com/en-us/library/ms730879.aspx
TextMessageEncodingBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.textmessageencodingbindingelement(v=vs.110).aspx
TransactionFlowBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.transactionflowbindingelement(v=vs.110).aspx
Transactions in WCF Services http://msdn.microsoft.com/en-us/library/ff384250.aspx
Types Supported by the Data Contract Serializer http://msdn.microsoft.com/en-us/library/ms731923.aspx
Using Data Contracts http://msdn.microsoft.com/en-us/library/ms733127(v=vs.110).aspx
WCF Configuration Tools http://msdn.microsoft.com/en-us/library/vstudio/hh323723(v=vs.100).aspx
WCF Extensibility – IParameterInspector http://blogs.msdn.com/b/endpoint/archive/2011/04/28/wcf-extensibility-iparameterinspector.aspx
WCF Extensibility: Parameter Inspectors http://cgeers.com/2008/11/09/wcf-extensibility-parameter-inspectors/
Versioning Strategies http://msdn.microsoft.com/en-us/library/ff384251.aspx
Windows Communication Foundation Endpoints http://msdn.microsoft.com/en-us/library/ms733821(v=vs.110).aspx
Windows Communication Foundation Tools http://msdn.microsoft.com/en-us/library/ms732015(v=vs.110).aspx
WindowsStreamSecurityBindingElement Class http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.windowsstreamsecuritybindingelement(v=vs.110).aspx
WSHttpBinding Class http://msdn.microsoft.com/en-us/library/system.servicemodel.wshttpbinding(v=vs.110).aspx
Creating and consuming Web API-based services – Design, Implement, Secure, Host and Manage, Consume
A WebAPI Basic Authentication Authorization Filter http://weblog.west-wind.com/posts/2013/Apr/18/A-WebAPI-Basic-Authentication-Authorization-Filter
AcceptVerbsAttribute Class http://msdn.microsoft.com/en-us/library/system.web.http.acceptverbsattribute%28v=vs.118%29.aspx
ActionFilterAttribute Class http://msdn.microsoft.com/en-us/library/system.web.http.filters.actionfilterattribute(v=vs.118).aspx
Add Models and Controllers http://www.asp.net/web-api/overview/data/using-web-api-with-entity-framework/part-2
Async Streaming in ASP.NET Web API http://blogs.msdn.com/b/henrikn/archive/2012/02/24/async-actions-in-asp-net-web-api.aspx
Asynchronous Programming with Async and Await (C# and Visual Basic) http://msdn.microsoft.com/en-us/library/hh191443.aspx
Authentication and Authorization in ASP.NET Web API http://www.asp.net/web-api/overview/security/authentication-and-authorization-in-aspnet-web-api
Basic Authentication in ASP.NET Web API http://www.asp.net/web-api/overview/security/basic-authentication
Content Negotiation in ASP.NET Web API http://www.asp.net/web-api/overview/formats-and-model-binding/content-negotiation
Cross-Site Request Forgery (CSRF) https://www.owasp.org/index.php/Cross-Site_Request_Forgery
Dependency Injection in ASP.NET Web API 2 http://www.asp.net/web-api/overview/advanced/dependency-injection
Enabling Cross-Origin Requests in ASP.NET Web API 2 http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api
Enabling CRUD Operations in ASP.NET Web API 1 http://www.asp.net/web-api/overview/older-versions/creating-a-web-api-that-supports-crud-operations
Forms Authentication in ASP.NET Web API http://www.asp.net/web-api/overview/security/forms-authentication
Getting Started with ASP.NET Web API 2 (C#) http://www.asp.net/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api
How to host your web API. http://www.asp.net/web-api/overview/hosting-aspnet-web-api
HTTP Authentication: Basic and Digest Access Authentication http://www.ietf.org/rfc/rfc2617.txt
HttpClient Class http://msdn.microsoft.com/en-us/library/system.net.http.httpclient%28v=vs.118%29.aspx
HttpClient.GetAsync Method (String) http://msdn.microsoft.com/en-us/library/hh158944(v=vs.118).aspx
HttpMessageHandler Class http://msdn.microsoft.com/en-us/library/system.net.http.httpmessagehandler(v=vs.118).aspx
HttpResponseException Class http://msdn.microsoft.com/en-us/library/system.web.http.httpresponseexception(v=vs.118).aspx
HttpResponseMessage Class http://msdn.microsoft.com/en-us/library/system.net.http.httpresponsemessage(v=vs.118).aspx
Integrated Windows Authentication http://www.asp.net/web-api/overview/security/integrated-windows-authentication
JSON and XML Serialization in ASP.NET Web API http://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization
Makecert.exe (Certificate Creation Tool) http://msdn.microsoft.com/en-us/library/bfsktky3.aspx
Media Formatters in ASP.NET Web API 2 http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
Media Formatters in ASP.NET Web API 2 http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters
Parameter Binding in ASP.NET Web API http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api
Preventing Cross-Site Request Forgery (CSRF) Attacks in ASP.NET Web API http://www.asp.net/web-api/overview/security/preventing-cross-site-request-forgery-(csrf)-attacks
Preventing CSRF Hacks in ASP.NET WebAPI http://www.dotnetcurry.com/showarticle.aspx?id=890
Routing Service http://msdn.microsoft.com/en-us/library/ee517423(v=vs.110).aspx
Routing Services [WCF Samples] http://msdn.microsoft.com/en-us/library/ee517423(v=vs.110).aspx
synchronous Streaming in ASP.NET WebApi http://weblogs.asp.net/andresv/asynchronous-streaming-in-asp-net-webapi
Using Asynchronous Methods in ASP.NET MVC 4 http://www.asp.net/mvc/overview/performance/using-asynchronous-methods-in-aspnet-mvc-4
WEB API 2 USING ACTIONFILTERATTRIBUTE, OVERRIDEACTIONFILTERSATTRIBUTE AND IOC INJECTION http://damienbod.wordpress.com/2014/01/04/web-api-2-using-actionfilterattribute-overrideactionfiltersattribute-and-ioc-injection/
Working with SSL in Web API http://www.asp.net/web-api/overview/security/working-with-ssl-in-web-api
Deploying web applications and services
Azure Guest OS Releases and SDK Compatibility Matrix http://msdn.microsoft.com/library/azure/ee924680.aspx
Azure Service Definition Schema (.csdef File) http://msdn.microsoft.com/library/azure/ee758711.aspx
Configuring a Web Server for Web Deploy Publishing (Remote Agent) http://www.asp.net/web-forms/overview/deployment/configuring-server-environments-for-web-deployment/configuring-a-web-server-for-web-deploy-publishing-(remote-agent)
Configuring Parameters for Web Package Deployment http://www.asp.net/web-forms/overview/deployment/web-deployment-in-the-enterprise/configuring-parameters-for-web-package-deployment
Configuring Step 1: Install IIS and ASP.NET Modules http://www.iis.net/learn/application-frameworks/scenario-build-an-aspnet-website-on-iis/configuring-step-1-install-iis-and-asp-net-modules
Continuous Delivery for Cloud Services in Azure http://azure.microsoft.com/en-us/documentation/articles/cloud-services-dotnet-continuous-delivery/
Continuous delivery to Azure using Visual Studio Online http://azure.microsoft.com/en-us/documentation/articles/cloud-services-continuous-delivery-use-vso/
Export a Package through IIS Manager http://www.iis.net/learn/publish/using-web-deploy/export-a-package-through-iis-manager
Get Started with Azure Cmdlets http://msdn.microsoft.com/library/azure/jj554332.aspx
Get started with Azure Websites and ASP.NET http://azure.microsoft.com/en-us/documentation/articles/web-sites-dotnet-get-started/
How to Configure Cloud Services http://azure.microsoft.com/en-us/documentation/articles/cloud-services-how-to-configure/
How to Deploy an Azure Website http://azure.microsoft.com/en-us/documentation/articles/web-sites-deploy/
IIS Information http://www.iis.net/
Installing and Configuring Web Deploy on IIS 7 http://www.iis.net/learn/install/installing-publishing-technologies/installing-and-configuring-web-deploy
Installing NuGet http://docs.nuget.org/docs/start-here/installing-nuget
Manage Deployments in Azure http://msdn.microsoft.com/en-us/library/azure/gg433027.aspx
NetworkConfiguration Schema http://msdn.microsoft.com/library/azure/jj156091.aspx
Nuspec Reference http://docs.nuget.org/docs/reference/nuspec-reference
Package Manager Console Powershell Reference http://docs.nuget.org/docs/Reference/Package-Manager-Console-PowerShell-Reference
Reference for the Web Application Package http://www.iis.net/learn/develop/windows-web-application-gallery/reference-for-the-web-application-package
Shadow Copying Assemblies http://msdn.microsoft.com/en-us/library/ms404279(v=vs.110).aspx
Step 1: Examining the Configuration Files http://msdn.microsoft.com/en-us/library/8f6988ab.aspx
Swap Deployment http://msdn.microsoft.com/en-us/library/azure/ee460814.aspx
Team Build + Web Deployment + Web Deploy + VS 2010 = Goodness http://vishaljoshi.blogspot.nl/2010/11/team-build-web-deployment-web-deploy-vs.html
Web Deploy Command Line Syntax http://technet.microsoft.com/en-us/library/dd569106.aspx
Web Deployment Overview for Visual Studio and ASP.NET http://msdn.microsoft.com/en-us/library/dd394698.aspx
Web.config Transformation Syntax for Web Project Deployment Using Visual Studio http://msdn.microsoft.com/en-us/library/dd465326.aspx
Xcopy http://technet.microsoft.com/en-us/library/cc771254.aspx

Using Lamba expression to process SharePoint objects (or any data you need to process)

This is just a trick to make your life easier. You can use this against any data in SharePoint as long as you do not need performance critical functionality. Remember that doing lambda expressions against big objects such as get an SPWeb or going through a list of SPWeb is still going to cost you the memory allocation and CPU utilization.

Sample how to remove an event receiver from a list:

using System.Linq;

var eventReceiver = list.EventReceivers.Cast<SPEventReceiverDefinition>().SingleOrDefault(o => o.Class.ToLower().Contains(receiverClass.ToLower()));
if (eventReceiver != null)
{
var allowUnsafeUpdates = web.AllowUnsafeUpdates;
web.AllowUnsafeUpdates = true;
eventReceiver.Delete();
list.Update();
web.Update();

web.AllowUnsafeUpdates = allowUnsafeUpdates;
}

Remember the concepts Late binding, Delayed Execution and Captured Variables.

Check you this Explanation from StackOverflow http://stackoverflow.com/questions/8930024/linq-late-binding-confusion =>

Late-binding: This is where the meaning of code is determined after it was compiled. For example, x.DoStuff() is early-bound if the compiler checks that objects of x‘s type have a DoStuff() method (considering extension methods and default arguments too) and then produces the call to it in the code it outputs, or fails with a compiler error otherwise. It is late-bound if the search for the DoStuff() method is done at run-time and throws a run-time exception if there was no DoStuff() method. There are pros and cons to each, and C# is normally early-bound but has support for late-binding (most simply through dynamic but the more convoluted approaches involving reflection also count).

Delayed execution: Strictly speaking, all Linq methods immediately produce a result. However, that result is an object which stores a reference to an enumerable object (often the result of the previous Linq method) which it will process in an appropriate manner when it is itself enumerated. For example, we can write our own Take method as:

private static IEnumerable<T> TakeHelper<T>(IEnumerable<T> source, int number)
{
  foreach(T item in source)
  {
    yield return item;
    if(--number == 0)
      yield break;
  }
}
public static IEnumerable<T> Take<T>(this IEnumerable<T> source, int number)
{
  if(source == null)
    throw new ArgumentNullException();
  if(number < 0)
    throw new ArgumentOutOfRangeException();
  if(number == 0)
    return Enumerable.Empty<T>();
  return TakeHelper(source, number);
}

Now, when we use it:

var taken4 = someEnumerable.Take(4);//taken4 has a value, so we've already done
                                    //something. If it was going to throw
                                    //an argument exception it would have done so
                                    //by now.

var firstTaken = taken4.First();//only now does the object in taken4
                                        //do the further processing that iterates
                                        //through someEnumerable.

Captured variables: Normally when we make use of a variable, we make use of how its current state:

int i = 2;
string s = "abc";
Console.WriteLine(i);
Console.WriteLine(s);
i = 3;
s = "xyz";

It’s pretty intuitive that this prints 2 and abc and not 3 and xyz. In anonymous functions and lambda expressions though, when we make use of a variable we are “capturing” it as a variable, and so we will end up using the value it has when the delegate is invoked:

int i = 2;
string s = "abc";
Action λ = () =>
{
  Console.WriteLine(i);
  Console.WriteLine(s);
};
i = 3;
s = "xyz";
λ();

Creating the λ doesn’t use the values of i and s, but creates a set of instructions as to what to do with i and s when λ is invoked. Only when that happens are the values of i and s used.

Putting it all together: In none of your cases do you have any late-binding. That is irrelevant to your question.

In both you have delayed execution. Both the call to Take and the call to Where return enumerable objects which will act upon arr when they are enumerated.

In only one do you have a captured variable. The call to Take passes an integer directly to Take and Take makes use of that value. The call to Where passes a Func<int, bool> created from a lambda expression, and that lambda expression captures an int variable. Where knows nothing of this capture, but the Func does.

That’s the reason the two behave so differently in how they treat cutoff. ” http://stackoverflow.com/questions/8930024/linq-late-binding-confusion

 

Microsoft sources of info:

Lambda Expressions (C# Programming Guide)

Getting Started with LINQ in C#

101 LINQ Samples

C# .NET Getting Windows Directory File Permissions programmatically

Hi,

 

I while back I needed to do a security trim on files in a Windows file system based on returned search results by SharePoint search. Since in SharePoint 2010 search indexing does not know how to take into consideration file system rights for searches there was a need to do a security trimming based on what privileges you have in Active Directory and what you are given to the file itself.

Since there where alot of moving parts and hard to find out which classes and function where needed to actually do this specific task I finally found a source that gave a great sample how to do this:

http://www.conarc.com/blog/2010/03/25/programmatically-getting-effective-directoryfile-permissions/

Unfortunately the source above does not exist anymore for whatever reason. So for those who might need similar functionality through code here is the sample code from the link above and what you need class wise.

In the code below what you need is to call the following static function to check for if the user has certain privileges:

FileSystemRights rights = FileSystemEffectiveRights.GetRights(username, filelocation);

Then call the following function to test against the given file system privileges and what you want to user to have in the file system.
bool canReadExecute = rights.HasRights(FileSystemRights.ReadAndExecute);

 

Classes and enumeration needed for this functionality(there are many moving parts here and you might have to work with Active Directory and File System to test this code):

FileSystemRights Enumeration

FileSystemAccessRule Class

AccessControlType Enumeration

AuthorizationRuleCollection Class

SecurityIdentifier Class

FileSystemAccessRule Class

FileInfo Class

PrincipalContext Class

UserPrincipal Class

PrincipalSearcher Class

WindowsIdentity Class

 

Sample code – http://www.conarc.com/blog/2010/03/25/programmatically-getting-effective-directoryfile-permissions/ :

public static class FileSystemRightsEx
{
public static bool HasRights(this FileSystemRights rights, FileSystemRights testRights)
{
return (rights & testRights) == testRights;
}
}

public static class FileSystemEffectiveRights
{

public static FileSystemRights GetRights(string userName, string path)
{
if (string.IsNullOrEmpty(userName))
{
throw new ArgumentException(“UserName not defined!”);
}

//if (!Directory.Exists(path) && !File.Exists(path))
//{
// throw new ArgumentException(string.Format(“path: {0}”, path));
//}

return GetEffectiveRights(userName, path);
}

private static FileSystemRights GetEffectiveRights(string userName, string path)
{
FileSystemAccessRule[] accessRules = GetAccessRulesArray(userName, path);
FileSystemRights denyRights = 0;
FileSystemRights allowRights = 0;

for (int index = 0, total = accessRules.Length; index < total; index++)
{
FileSystemAccessRule rule = accessRules[index];

if (rule.AccessControlType == AccessControlType.Deny)
{
denyRights |= rule.FileSystemRights;
}
else
{
allowRights |= rule.FileSystemRights;
}
}

return (allowRights | denyRights) ^ denyRights;
}

private static FileSystemAccessRule[] GetAccessRulesArray(string userName, string path)
{
// get all access rules for the path – this works for a directory path as well as a file path
AuthorizationRuleCollection authorizationRules = (new FileInfo(path)).GetAccessControl().GetAccessRules(true, true, typeof(SecurityIdentifier));

// get the user’s sids
string[] sids = GetSecurityIdentifierArray(userName);

// get the access rules filtered by the user’s sids
return (from rule in authorizationRules.Cast<FileSystemAccessRule>()
where sids.Contains(rule.IdentityReference.Value)
select rule).ToArray();
}

private static string[] GetSecurityIdentifierArray(string userName)
{
// connect to the domain
PrincipalContext pc = new PrincipalContext(ContextType.Domain);

// search for the domain user
UserPrincipal user = new UserPrincipal(pc) { SamAccountName = userName };
PrincipalSearcher searcher = new PrincipalSearcher { QueryFilter = user };
user = searcher.FindOne() as UserPrincipal;

if (user == null)
{
throw new ApplicationException(string.Format(“Invalid User Name: {0}”, userName));
}

// use WindowsIdentity to get the user’s groups
WindowsIdentity windowsIdentity = new WindowsIdentity(user.UserPrincipalName);
string[] sids = new string[windowsIdentity.Groups.Count + 1];

sids[0] = windowsIdentity.User.Value;

for (int index = 1, total = windowsIdentity.Groups.Count; index < total; index++)
{
sids[index] = windowsIdentity.Groups[index].Value;
}

return sids;
}
}

Social Media hyperlink(URL) copy&paste metadata

To be specific on what is shown in social media when you copy&paste a link from you web application or SharePoint application you have to define HTML headers meta-tags. Most social medias such as Facebook, Twitter, Google+ and LinkedIn support the Open Graph Protocol. It is rather straight forward on to use it. Check our the web site:

http://ogp.me/

For C# developers you can use the HtmlMeta class to perform your needs: HtmlMeta Class

Or you could use a combination of HTML and embbeded code