如果我有一个包含任意数量列表的列表,如下所示:
var myList = new List<List<string>>()
{
new List<string>() { "a", "b", "c", "d" },
new List<string>() { "1", "2", "3", "4" },
new List<string>() { "w", "x", "y", "z" },
// ...etc...
};
Run Code Online (Sandbox Code Playgroud)
...有没有办法以某种方式将列表"压缩"或"旋转"成这样的东西?
{
{ "a", "1", "w", ... },
{ "b", "2", "x", ... },
{ "c", "3", "y", ... },
{ "d", "4", "z", ... }
}
Run Code Online (Sandbox Code Playgroud)
显而易见的解决方案是做这样的事情:
public static IEnumerable<IEnumerable<T>> Rotate<T>(this IEnumerable<IEnumerable<T>> list)
{
for (int i = 0; i < list.Min(x => x.Count()); i++) …Run Code Online (Sandbox Code Playgroud) 我有3个完全相同的项目集合.
我需要根据这3个集合项值创建一个新集合.
例如:
List<double> list1;
List<double> list2;
List<double> list3;
List<Item> list4;
public class Item
{
public double Value1{get;set;}
public double Value2{get;set;}
public double Value3{get;set;}
}
Run Code Online (Sandbox Code Playgroud)
我尝试使用Linq实现这一目标.
我试过了 :
var query = from pt in list1
from at in list2
from ct in list3
select new Item
{
Value1 = pt,
Value2 = at,
Value3 = ct
};
Run Code Online (Sandbox Code Playgroud)
但我得到了OutOfMemoryException,我的3个列表很大.
有帮助吗?
我有两个classe
Class One{
int id;
string name;
int total;
int val2;
int level;
}
Class Two{
int id;
string name;
string parentName;
int parentId;
int level;
}
Run Code Online (Sandbox Code Playgroud)
class One包含有关id,name和一些数字字段的信息.另一方面,第二类包含id,名称(包含与第一类中相同的数据),但它也包含分层信息.喜欢谁是当前节点的父级和级别信息(在一级中可用)
我需要根据Id字段合并这两个类并产生如下结果:
class Three{
int id;
string name;
string parentName;
int parentId;
int level;
int total;
int val2;
}
Run Code Online (Sandbox Code Playgroud)
在C#中获得所需结果的最有效方法是什么?如果列表相同,我们可以使用Concat方法.
我有3个IEnumerables整数,我想用它来制作一个Tuple数组.什么是最好的方法?如果我只有2个IEnumebles,我会使用Zip,但在这种情况下?
我有 2 个不同的正则表达式匹配项,目前使用 2 个 foreach 循环来获取匹配值。但是,就目前而言,如果一个 foreach 有效,则另一个无效。
尝试 1
foreach (string dir in multiTrimmed1)
{
foreach (string dir2 in multiTrimmed2)
{
var forVal2= dir.Replace("$", "").Replace(" ", "");
var forVal3 = dir2.Replace(",", "");
var parsedParams= new ParsedMethod()
{
Value1= forVal1,
Value2 = Convert.ToDecimal(forVal2),
Value3 = Convert.ToDecimal(forVal3),
Value4 = forVal4
};
MergeAllValues(parsedParams);
}
}
Run Code Online (Sandbox Code Playgroud)
所以这里的问题是 multiTrimmed1 和 multiTrimmed2 每个都有 string[4] 。
假设 A、B、C 和 D。在我的尝试 1 中,我希望 forVal2 和 forVal3 正确地通过循环。
我的意思是,当 forVal2 是 A 时,forVal3 也是 A - 将其发送到 …
我有两个独立的db列表:
List<Id> lstId 哪个有价值 0,1,2,…
List<name> lstnaname 哪个有价值 “a”,”b”,c”
我想结合这两个没有任何共同列的列表.我的预期产量是
List<output> out
Out[0] = {0,”a”}
Out[1] = {1,”b”}
Run Code Online (Sandbox Code Playgroud)
我尝试在linq中使用concat,但它只是将listA添加到listB中.
Join子句不起作用,因为没有公共字段.我怎么做到这一点?
是否可以使用LINQ将两个或多个相同类型和大小的集合折叠/合并到相同类型和大小的新集合中?
var list01 = new List<string> { "A", "", "", "B", "", "", "" };
var list02 = new List<string> { "", "C", "", "", "", "D", "" };
var list03 = new List<string> { "", "", "", "", "E", "", "" };
The desired result: "A", "C", "", "B", "E", "D", "";
Run Code Online (Sandbox Code Playgroud)
如果一个集合在某个位置保存数据,则其他集合都不会将数据保存在同一位置,例如list02和list03中的第一个位置将始终为空,因为list01在第一个位置保持A.