C#Azure函数比较两个Blob之间的更改

时间:2019-01-28 18:17:49

标签: c# azure-functions azure-storage-blobs

我正在使用Azure函数,该函数应该读取两个存储为Azure Blob存储中的Blob的.csv文件,并返回第三个新的Blob,且两个输入Blob之间的行不同。

例如:

csv1:
12,aaa,bbb,ccc,ddd,eee,fff
13,aaa,bbb,ccc,ddd,eee,fff

csv2:
12,bbb,aaa,ccc,ddd,eee,fff
13,aaa,bbb,ccc,ddd,eee,fff
14,aaa,bbb,ccc,ddd,eee,fff

Output csv:
12,bbb,aaa,ccc,ddd,eee,fff
14,aaa,bbb,ccc,ddd,eee,fff

到目前为止,我已经能够读取Blob文件,但是无法直接比较它们。通过读取Blob并将它们加载到两个不同的Datatable中并在它们之间进行比较,我确实设法使其工作。但是,该方法太慢了,我很确定有一种更有效的处理方法。

(在Powershell中,在家中使用Compare-Object函数有点像我想创建的东西)。

我可以使用.DownloadText()或.DownloadToStream()方法加载Blob,因此获取Blob内容没有问题。

blobA = container.GetBlockBlobReference("FileA");
blobB = container.GetBlockBlobReference("FileB");

string blobContentsA = blobA.DownloadText();
string blobContentsB = blobB.DownloadText();

string textA;
using (var memoryStream = new MemoryStream())
  {
  blobA.DownloadToStream(memoryStream);
  textA = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
  }

string textB;
using (var memoryStream = new MemoryStream())
  {
  blobA.DownloadToStream(memoryStream);
  textB = System.Text.Encoding.UTF8.GetString(memoryStream.ToArray());
  }

我尝试了下面的代码,但是随后出现“无法从'System.Collections.Generic.IEnumerable'转换为'string'”的消息,所以我想我必须在此处做些什么,但是我没有任何线索诚实。

0 个答案:

没有答案