c# - 如何使用两个连接表 a 和 B 的列表编写 linq 查询,然后按 a 的 id 分组,以及 B 中的连接行数
问题描述
如何使用两个连接表 A 和 B 的列表编写 Linq 查询,然后按 A 的 id 分组,以及 B 中的连接行数
例如
class A{
int Id,
int BId,
string AName
};
class B{
int Id,
string description
};
并显示如下(A 与 B 连接后)A.Bid = B.Id
A Id | count(Id) | AName
坦率地说,我必须实现从 PHP 到 LINQ 的以下查询。所有依赖项都写在下面的查询中:
select("asset.id as Id,asset.AssetBundleID as AssetBundleID,asset.GUID as GUID,asset.Name as Id,asset.Name as Id,asset.DisplayName as DisplayName,asset.Description as Description,asset.Category as Category,asset.TexturesSize as TexturesSize,asset.TexturesFileSize as TexturesFileSize,asset.OthersSize as OthersSize,asset.id as Id,asset.OthersFileSize as OthersFileSize,count(*) as InstancesCount")
-> from ("asset")
->join('左连接',"assetinstance"," assetinstance
. AssetId
= asset
. Id
")
->groupBy("asset.Id")
解决方案
你的意思是这样的吗?
using System;
using System.Collections.Generic;
using System.Linq;
public class A
{
public int Id {get; set;}
public int BId {get; set;}
public string AName {get; set;}
}
public class B{
public int Id {get; set;}
public string description{get; set;}
}
public class Program
{
private static List<A> _aList = new List<A>();
private static List<B> _bList = new List<B>();
public static void Main()
{
Seed();
var query =
from b in _bList
group b by b.Id into g
join a in _aList on g.FirstOrDefault().Id equals a.BId
select new { A_ID = a.Id, Cnt = g.Count(), AName = a.AName};
Console.WriteLine("A_ID | count(Id) | AName");
foreach(var row in query)
{
Console.WriteLine(string.Join(" | ", new string[]{row.A_ID.ToString(), row.Cnt.ToString(), row.AName}));
}
}
public static void Seed()
{
_aList.Add(new A{Id=1, BId=1, AName="A1"});
_aList.Add(new A{Id=2, BId=1, AName="A2"});
_aList.Add(new A{Id=3, BId=1, AName="A3"});
_aList.Add(new A{Id=4, BId=2, AName="A4"});
_bList.Add(new B{Id=1, description="B1"});
_bList.Add(new B{Id=2, description="B2"});
}
}
推荐阅读
- amazon-web-services - 在 AWS 上托管静态网页时,如何让我的电子邮件注册表单正常工作?
- node.js - 将脚本标记添加到 Sabre 静态站点生成器时出错
- css - 如何防止孩子继承 3d 转换 CSS3?
- flutter - 如何使颤振小部件的一部分表现得像堆栈
- android - 如果我给出像文件夹名称/图片名称这样的图像路径,它会显示在 windows 平台上,但不会在 xamarin 中的 Android 中显示
- python - 列名称为“开始”的字典列排列
- python - If/else Python 3:Else 语句不起作用
- javascript - 如何使用反应路由器将数据从页面传递到另一个页面
- wordpress - 如果GraphQL返回null,使用Gatsby`createResolvers`设置默认图像?
- javascript - 背景图像滑块的淡入、淡出和时间间隔