Question: Why doesnt this work, and how to fix?

```
public interface ITheInterface
{

  string a{get;set;}
  string b{get;set;}
}

public class SomeObject: ITheInterface
{
  string a{get;set;}
  string b{get;set;}
  ...
}

public class SomeGroup
{
  ITheInterface Result;
  ...   
}

 var results= from y in dc.Groups
              where y.id==1
              select new SomeGroup
                        {
                         Result= (from x in dc.Objects
                         select new SomeObject{... }
                        ).SingleOrDefault(),
                        }

 return results.ToList();

```

Could not convert from type `System.Collections.Generic.List` to Interface

Answer: 
I assume your problem is with the `Results.ToList()` call? It will fail, because `ITheInterface` does not support `ToList()`. You are calling `SingleOrDefault()` on the LINQ query, which is giving you a single item. It doesn't make sense to call `ToList()` on a single item.

If, instead, your code read like this:

```
IEnumerable<SomeObject> Results = from x in dc.Objects
                                     select new SomeObject{... };

```

Then, `Results.ToList()` will give you a `List<SomeObject>`.

If what you are actually looking for is a `List<ITheInterface>` instead, you can do this:

```
Results.Cast<ITheInterface>().ToList()

```
Results is a single object; ToList() only works on Enumerables.

You need to either write `return new List { Results };` (this uses a collection initializer) or get rid of the call to `SingleOrDefault` and declare Results as an `IEnumerable<ITheInterface>`.

If you only want one object, why are you returning a List?