sql语句,linq语句,C#查询问题

2025-05-07 03:29:37
推荐回答(2个)
回答1:

你的意思是把b表的信息以列的形式显示在a表信息的后面吧,这样做明显不合理啊。
子查询返回的值不止一个。当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。
这是sql一条语句去实现返回的错误,楼主最好不要用这种方法显示。
如果是在.NET里面显示,可以把a表信息存在一个datatable里面,便利所有行,每一行查询b表,查几个便为这个datatable添加几列再赋值。
回头是岸

回答2:

           

Dictionary abNames = new Dictionary();
List tempAs = new List();
// 查出所有A表记录 {ID, Name}
List tempBs = new List();
// 查出所有B表记录 {ID, A_ID, Name}
foreach (var a in tempAs)
{
    var tempAB = tempBs.Where(b => b.A_ID == a.ID);
    string tempABStr = string.Empty;
    foreach (var ab in tempAB)
        tempABStr += ab.Name + ";";
    tempABStr = tempABStr.TrimEnd(';');
    abNames.Add(a.Name, tempABStr);
}
// 最后使用abNames即可