gpt4 book ai didi

c# - 如何使用 linq 返回 TableOjb1 和 TableObj2 的 Wrapper obj

转载 作者:太空狗 更新时间:2023-10-29 20:30:32 25 4
gpt4 key购买 nike

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;}
}

我的问题是如何在连接两个表时返回 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();
}

但是 QueryJoin() 给出异常: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 });
}

编辑:由于您的数据库似乎不支持连接,您可以将数据库的结果提取到两个不同的列表中,然后使用 LINQ 连接它们。

关于c# - 如何使用 linq 返回 TableOjb1 和 TableObj2 的 Wrapper obj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26410146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com