У вас есть несколько вариантов здесь ...
Вы можете создать представление базы данных, которое выполняет ваше объединение, и SubSonic сгенерирует тип данных для вашего представления, тогда ваш выбор будет аналогичен выбору из любой другой таблицы.
В качестве альтернативы, вы можете использовать выражение Linq для объединения в анонимный или динамический тип (если вы используете .net 4) Например:
public List<dynamic> LoadData(int id)
{
var data = from f in db.Foo
from b in db.Bar.Where(x => x.Id == f.BarId).DefaultIfEmpty()
where f.SomeProperty == id
select new
{
SomeProperty = f.Something,
AnotherProperty = b.SomethingElse
};
return data.Cast<dynamic>().ToList();
}
Конечно, другой альтернативой является приведенное выше выражение Linq, но определите свой собственный класс для хранения возвращаемых данных и выберите его.
public class MyData
{
public string SomeProperty { get; set; }
public string AnotherProperty { get; set; }
}
public List<MyData> LoadData(int id)
{
var data = from f in db.Foo
from b in db.Bar.Where(x => x.Id == f.BarId).DefaultIfEmpty()
where f.SomeProperty == id
select new MyData()
{
SomeProperty = f.Something,
AnotherProperty = b.SomethingElse
};
return data.ToList();
}