我有一个表[T1]与此信息
第二桌[T2]是
关系是来自T1的一个用户可以有很多T2
我希望得到像
这样的结果我对sql的感觉就像
var result = (from t1 in context.t1
join t2 in context.UserID on t1.ID equals t2.UserID
select new CLASS
{
ID = t1.ID,
UserID = t1.UserID,
Names = t2.name
}).Take(10).ToList();
但是这给了我结果,因为每个t2.name都是分隔的行。我如何收集阵列中的所有名字?
LINQ to SQL,ASP.NET C#4.0
答案 0 :(得分:1)
我认为这样的事情应该有效
var result = (from t1 in context.t1
join t2 in context.UserID on t1.ID equals t2.UserID
select new CLASS
{
ID = t1.ID,
UserID = t1.UserID,
Names = (from t2 in context.t2
select t2.Name
where t2.userID = t1.userID).toArray(),
}).Take(10).ToList();
希望有所帮助
答案 1 :(得分:0)
您无需使用联接。在linq设计器中创建一个b / n你的两个linq entites的关系然后你可以运行这样的查询:
var q = from t in context.t1
select new { id = t1.id, names = t1.t2s.Select(t => t.Name).ToArray() };
答案 2 :(得分:0)
您必须按ID /用户ID对结果进行分组:
var result = (from t1 in context.t1
join t2 in context.UserID on t1.ID equals t2.UserID
group by new { t1.ID, t1.UserID } into g
select new CLASS
{
ID = g.Key.ID,
UserID = g.Key.UserID,
Names = g.ToArray()
}).Take(10).ToList();
但是,当正确准备LINQ to SQL类时,可以进行如下类型的查询:
var result = from t1 in context.t1 select new { id = t1.id, names = t1.t2s.ToArray() };