c# - C# linq IQueryable 多重过滤
问题描述
我找不到如何使用 LINQ 进行多重过滤的方法。
我想做的事:
1.过滤版本(已实现)
2.过滤公司名称(过滤/删除重复)
3.获取最新时间戳
4.然后将所有内容添加到列表中。
到目前为止,这是我编写的代码(不起作用)。
public List<ReleaseStatistics> GetReleaseStatistics(IQueryable<InstallationInformation> input, IQueryable<DBContext.Version> mapping)
{
List<ReleaseStatistics> Releasestats = new List<ReleaseStatistics>();
foreach (var version in mapping)
{
IQueryable<InstallationInformation> QueryResult1 = input.Where(x => x.ProductVersion == version.VersionNumber);
IQueryable<InstallationInformation> QueryResult2 = QueryResult1.GroupBy(x => x.CompanyName).SelectMany(y => y);
List<InstallationInformation> ListofInstallationInformation = QueryResult2.ToList<InstallationInformation>();
if (ListofInstallationInformation.Count >= 1)
{
Releasestats.Add(new ReleaseStatistics
{
ReleaseVersion = version.ReleaseName,
CustomerCount = QueryResult1.Where(x => x.ProductVersion == version.VersionNumber).Count()
});
}
}
return Releasestats;
}
补充资料:
问题之一是存在重复项,我想过滤/删除它们,但我想获取每个 CompanyName 的最新时间戳,然后将其添加到列表中。
解决方案
问题是这条线
IQueryable<InstallationInformation> QueryResult2 = QueryResult1.GroupBy(x => x.CompanyName).SelectMany(y => y);
实际上什么都不做。
假设 QueryResult1 是
公司名称 | F1 | F2 |
CN1 | f1a | f2a |
CN1 | f1a | f2a |
CN2 | f1b | f2b |
那么 QueryResult1.GroupBy(x => x.CompanyName) 是
集团 | 数据
CN1 | 公司名称 | F1 | F2 |
CN1 | f1a | f2a |
CN1 | f1a | f2a |
CN2 | 公司名称 | F1 | F2 |
CN2 | f1b | f2b |
然后 QueryResult1.GroupBy(x => x.CompanyName).SelectMany(y => y); 又是
公司名称 | F1 | F2 |
CN1 | f1a | f2a |
CN1 | f1a | f2a |
CN2 | f1b | f2b |
你想做的可能是
var QueryResult2 = QueryResult1.GroupBy(x => x.CompanyName).Select(y => new {CompanyName = y.Key, MaxTimestamp = y.Max(z => z.TimeStamp)});
推荐阅读
- javascript - Expressjs:按下按钮时的运行方法
- android - 在同一个布局文件中包含选项卡和 viewpager 的逻辑?
- java - 当测试预期异常时,assertEquals 不显示错误
- php - 如何在 macOS 10.14.1 Mojave 中安装带有对 php 的 freetype 支持的 GD
- python - Add one column dor each value in a list
- javascript - 将变量绑定到对象属性
- php - 如何对文本框进行分组,以便同时提交它们。使用 PHP、CodeIgniter 和 HTML
- c++ - CV_LOAD_IMAGE_GRAYSCALE 和 cvtCOLOR(..., BGR2GRAY) 之间的区别
- ruby-on-rails - 在 Rails 路由中使用 lambda 在“get”下嵌套“get”请求
- java - Config-Server 无法配置数据源:未指定“url”属性,无法配置嵌入式数据源