相关疑难解决方法(0)

如何"压缩"或"旋转"可变数量的列表?

如果我有一个包含任意数量列表的列表,如下所示:

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)

c# linq algorithm

13
推荐指数
3
解决办法
1145
查看次数

使用Linq从3个集合创建项目

我有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个列表很大.

有帮助吗?

c# linq

11
推荐指数
2
解决办法
4429
查看次数

当C#的结构不匹配时,在C#中组合两个对象列表

我有两个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方法.

.net c# asp.net merge concat

4
推荐指数
1
解决办法
760
查看次数

3 IEnumerables到1元组

我有3个IEnumerables整数,我想用它来制作一个Tuple数组.什么是最好的方法?如果我只有2个IEnumebles,我会使用Zip,但在这种情况下?

c# ienumerable tuples

2
推荐指数
1
解决办法
780
查看次数

c# 2 为每个循环,如果一个工作另一个不

我有 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 - 将其发送到 …

c#

2
推荐指数
1
解决办法
70
查看次数

加入两个列表,LINQ中没有任何匹配的列

我有两个独立的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子句不起作用,因为没有公共字段.我怎么做到这一点?

.net c# linq c#-4.0

0
推荐指数
1
解决办法
352
查看次数

使用LINQ将多个集合折叠到一个集合中

是否可以使用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.

.net c# linq merge list

0
推荐指数
1
解决办法
69
查看次数

标签 统计

c# ×7

linq ×4

.net ×3

merge ×2

algorithm ×1

asp.net ×1

c#-4.0 ×1

concat ×1

ienumerable ×1

list ×1

tuples ×1