I finally had a chance to sit and work with LINQ for a bit, and while it is very cool, a little bit of its luster was lost when I can assign interfaces to the anonymous classes generated by the queries. Meaning I can not do something like:
public interface IExample
{
string Name { get; set; }
string Description { get; set; }
}
public class DataGenerator
{
public IEnumerable<IExample> GetExamples(string categoryName)
{
//Context Definition
IEnumerable<IExample> examples =
from x in db.Examples //LINQ to SQL Class
where x.Category.Name = categoryName
select new IExamples { Name = x.Name
, Description = x.Description } ;
// There is probobly better syntax for this
return examples;
}
}
Now I know I could instead do
public class Example
{
public string Name { get; set; }
public string Description { get; set; }
}
public class DataGenerator
{
public IEnumerable<Example> GetExamples(string categoryName)
{
//Context Definition
IEnumerable<Example> examples =
from x in db.Examples //LINQ to SQL Class,
where x.Category.Name = categoryName
select new Example{ Name = x.Name, Description = x.Description };
return examples;
}
}
or if I wanted to continue only exposing an interface
public interface IExample
{
string Name { get; set; }
string Description { get; set; }
}
internal class Example:IExample
{
public string Name { get; set; }
public string Description { get; set; }
}
public class DataGenerator
{
public IEnumerable<IExample> GetExamples(string categoryName)
{
//LINQ to SQL Context Definition
var examples =
from x in db.Examples
where x.Category.Name = categoryName
select new Example{ Name = x.Name
, Description = x.Description };
return examples.OfType<IExample>();
}
}
Over all this isn't a big issue since the second method works just fine for what I am trying to accomplish for the most part. But it feels kind of off having to make a throwaway class to accomplish this.