C# 仅复制到第二个数组

C# 仅复制到第二个数组,c#,arrays,string,C#,Arrays,String,我试图将一个数组复制到另一个只复制不同内容的数组。在我制作多维阵列之前,我已经完成了这项工作。现在,当我运行下面的代码时,它只是将原始数组复制到第二个数组。我还需要在以后将数据输出到网页时将它们保持为数组格式。我做错了什么?我能不能用multi-dim做这个 string[][] array; string[][] array2; array2 = array.Distinct().ToArray(); 发布后,我是否可以编辑我的file.readalllines以不读取相同的行?代码如下,表

我试图将一个数组复制到另一个只复制不同内容的数组。在我制作多维阵列之前,我已经完成了这项工作。现在,当我运行下面的代码时,它只是将原始数组复制到第二个数组。我还需要在以后将数据输出到网页时将它们保持为数组格式。我做错了什么?我能不能用multi-dim做这个

string[][] array;
string[][] array2;
array2 = array.Distinct().ToArray();
发布后,我是否可以编辑我的file.readalllines以不读取相同的行?代码如下,表作为数组传回

 string[][] table = File.ReadAllLines(@path)
                       .Select(line => line.Split(';'))
                       .ToArray();

为了简单起见。为什么不使用此选项(在行级别应用不同的选项):

这里的假设是,相等的线导致相同的数组。这意味着,顺序是两条不同直线相等定义中的一个组成部分。

(我想我的评论根本没有被理解,所以添加了一个答案)

假设您的文本文件是这样的(c:\temp\myFile.txt):

然后,您可以使用如下代码获得不同的行:

void Main()
{
    int custId;
    decimal amount;
    var content =
      File.ReadAllLines(@"c:\temp\myFile.txt")
      .Select(f => f.Split(';'))
      .Select(f => new
      {
          CustomerID = int.TryParse(f[0], out custId) ? custId : -1,
          Company = f[1].Trim(),
          Amount = Decimal.TryParse(f[2], out amount) ? amount : 0M
      })
      .Where(f => f.CustomerID != -1)
      .Distinct();

    foreach (var c in content)
    {
        Console.WriteLine("CustomerID:{0}, Company:{1}, Amount:{2}", c.CustomerID, c.Company, c.Amount);
    }  
}

你说不工作是什么意思?当您想执行
Distinct()
时,是否希望每个内部数组都只有不同的值?最好显示一些输入和预期的数据
Distinct
没有为多维数组定义。假设您有
array=={“a”、“b”、“a”、“d”}、{“a”、“b”、“c”、“b”}
;预期的答案是什么?您需要首先定义此场景中的distinct含义。还有你希望.NET为你做什么。你有重复的行吗?还是在这
行中有重复的项。拆分(“;”)
重复的项要区分?这就是我做错的地方。我有一种感觉,我可以读懂它,并尝试了类似的东西之前。我的问题是我一直在努力;在最后一行。谢谢。如果您认为这是关于以类似CSV的方式获取不同的值,那么这可能会失败。除了@CetinBasoz的尾随空格外,两行可能具有相同的精确数据-您完全正确。因此,我在答案中加入了这个假设。是的,但我不是这个意思。考虑两条线:从数据文件解析的角度来看,这些行具有相同的数据。@DmitryBychenko-那么它们就不同了。但我明白你的观点,那就是为了一个普遍的解决方案,必须对“不同之处”下定义。如果假设成立,则由OP决定文本不同的行导致逻辑上不同的数组。
1; Name1; 100
1; Name1;100
1 ;Name1;100
11; Name1; 100
2;Name2;20
void Main()
{
    int custId;
    decimal amount;
    var content =
      File.ReadAllLines(@"c:\temp\myFile.txt")
      .Select(f => f.Split(';'))
      .Select(f => new
      {
          CustomerID = int.TryParse(f[0], out custId) ? custId : -1,
          Company = f[1].Trim(),
          Amount = Decimal.TryParse(f[2], out amount) ? amount : 0M
      })
      .Where(f => f.CustomerID != -1)
      .Distinct();

    foreach (var c in content)
    {
        Console.WriteLine("CustomerID:{0}, Company:{1}, Amount:{2}", c.CustomerID, c.Company, c.Amount);
    }  
}