mac*_*Jun 7 c# linq sqlite.net
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;}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是如何在连接两个表时返回MergeObj列表.我试过了:
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();
}
Run Code Online (Sandbox Code Playgroud)
但是QueryJoin()给出了Exception:System.NotSupportedException,不支持连接.
请注意我使用的是sqlite.net,而不是ADO.net.
尝试将连接结果投射到列表后进行选择。
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 });
}
Run Code Online (Sandbox Code Playgroud)
编辑:由于您的数据库似乎不支持联接,因此您可以将数据库的结果提取到两个不同的列表中,然后使用 LINQ 将它们联接起来。