class TableObj1 {
public string Id {get; set;}
public string Name {get; set;}
}
class TableObj2 {
public string Id {get; set;}
public string Email {get; set;}
}
class MergeObj {
public TableObj1 Obj1 {get; set;}
public TableObj2 Obj2 {get; set;}
}
My question is how to return a list of MergeObj when joining the two tables. I tried:
public IEnumerable<MergeObj> QueryJoin() {
return (
from obj1 in conn.Table<TableObj1>()
join obj2 in conn.Table<TableObj2>()
on obj1.Id
equals obj2.Id
select new MergeObj{Obj1 = obj1, Obj2 = obj2}
);
}
void main() {
IEnumerable<MergeObj> mergeObjs = QueryJoin();
}
But QueryJoin() gives Exception: System.NotSupportedException, Joins are not supported.
please note I'm using sqlite.net not ADO.net.
Try doing the select after casting the join result to a list.
public IEnumerable<MergeObj> QueryJoin()
{
List<TableObj1> t1 = conn.Table<TableObj1>().ToList();
List<TableObj2> t2 = conn.Table<TableObj2>().ToList();
return t1.Join(t2, outer => outer.Id,
inner => inner.Id,
(outer, inner) => new MergeObj { Obj1 = outer, Obj2 = inner });
}
Edit : Since your database don't seems to support join, you can extract the result of your database in two distinct List and then join them using LINQ.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With