c# - 从 C# 的列表中向 LINQ 查询的结果发送一个新列表
问题描述
我正在从我创建的类创建一个通用列表并输入我需要的数据。
public class GroupList
{
public int pertt { get; set; }
public int pips { get; set; }
public int[] iVals;
public GroupList(int PerTT , int Pips , int[] iValues)
{
this.pertt = PerTT;
this.pips = Pips;
iVals = iValues;
}
public override string ToString()
{
return $"PerTT: {pertt} Pips: {pips} Values: {string.Join(", ", iVals)}";
}
}
我想将我的数据输入到派生自此类的 mydatalist 列表中,并将 LINQ 查询发送到 Mylinqresult 通用列表并正确打印并执行数学运算。
static void Main(string[] args)
{
List<GroupList> myDataList = new List<GroupList>
{
new GroupList(15, 65, new[] {3, 9, 21, 1, 56}),
new GroupList(15, 65, new[] {13, 19, 121, 11, 156}),
new GroupList(10, 19, new[] {23, 29, 221, 12, 562}),
new GroupList(10, 21, new[] {33, 93, 213, 13, 356}),
new GroupList(21, 9, new[] {43, 49, 421, 41, 456}),
new GroupList(21, 19, new[] {35, 95, 216, 17, 56})
};
List<GroupList> myLinqResult = new List<GroupList>();
myLinqResult = from x in myDataList
where x.iVals[] > 65
select x;
}
以这种方式键入查询时出现编译错误。
查询可以根据 Int32 数组中给出的参数进行查询,并且可以通过将结果发送到相同的格式列表来打印和对数据执行数学运算来访问。
解决方案
如果要选择GroupList
数组中包含超过 65 项的所有对象,可以执行以下操作:
List<GroupList> myLinqResult = myDataList
.Where(item => item.iVals.Any(i => i > 65))
.ToList();
否则,如果您尝试选择超过 65 的所有项目(无论GroupList
它们属于哪个项目),您可以执行以下操作:
List<int> allItemsOver65 = myDataList
.SelectMany(item => item.iVals)
.Where(i => i > 65)
.ToList();
最后,如果您想选择与原始项目匹配但仅包含其数组中超过 65 个项目的新 项目,您可以执行以下操作:GroupList
iVal
List<GroupList> myLinqResult = myDataList
.Where(item => item.iVals.Any(i => i > 65))
.Select(item =>
new GroupList(item.pertt, item.pips, item.iVals.Where(i => i > 65).ToArray()))
.ToList();
推荐阅读
- javascript - 如何在不更改浏览器尺寸的情况下调用 matchmedia 函数
- python-3.x - pip - 由于 SSL 错误,无法安装 jupyter notebook
- entity-framework - FK 在 EF 中为空的问题
- user-interface - 如何在颤振测试中验证 Switch 小部件的状态?
- javascript - 可以操纵 HTML5 Canvas CLearRect() 使其看起来像箭头吗?
- python - Python和正则表达式从带有罗马数字的docx中提取标题
- php - 刮除大于一页
- java - Java Hibernate - 无法连接到 H2
- typescript - 无法使打字稿在 Codepen 中工作
- android - Realm 平台创建基于查询的 Realm