在 Azure EventHubTrigger Function 应用程序中设置列

Set columns in Azure EventHubTrigger Function app

我想根据我发送到 IoT 中心的一些变量设置 Azure Table 的前两列(PartitionKey 和 RowKey),但我不确定我的熟悉程度如何用C#。我当前的代码如下:

#r "Microsoft.WindowsAzure.Storage"

using System;
using Microsoft.WindowsAzure.Storage.Table;

public static void Run(DataPoint myIoTHubMessage, out DataPoint outputTable, TraceWriter log)
{
   log.Info($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}");

   myIoTHubMessage.PartitionKey = DateTime.Now.ToString("dd-MM-yyyy");
   myIoTHubMessage.RowKey = DateTime.Now.ToString("HH:mm:ss");

   outputTable = myIoTHubMessage;
}

public class DataPoint : TableEntity
{
   public string cameraName { get; set; }
   public string dateTime { get; set; }
   public double Area { get; set; }
}

在这里我设法将这些行设置为当前日期和时间,但我的意愿是将它们设置为收到的其他变量,例如 cameraNamedateTime,而不复制它们(我设法用以下两行做到了,但这只是复制了列):

   myIoTHubMessage.PartitionKey = myIoTHubMessage.cameraName;
   myIoTHubMessage.RowKey = myIoTHubMessage.dateTime;

有没有办法只将 3 个变量作为列?

我不确定我是否理解正确,但您希望输出具有 3 个属性: PartitionKey、RowKey 和 Area?

如果是,则尝试为输出定义新的class并将其用于return数据:

public static void Run(DataPoint myIoTHubMessage, out OutPutData outputTable, TraceWriter log)
{
   log.Info($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}");

    outputTable = new OutPutData
    {
        PartitionKey = myIoTHubMessage.cameraName,
        RowKey = myIoTHubMessage.dateTime,
        Area = myIoTHubMessage.area
    };
}

public class DataPoint : TableEntity
{
   public string cameraName { get; set; }
   public string dateTime { get; set; }
   public double Area { get; set; }
}

public class OutPutData : TableEntity
{
   public double Area { get; set; }
}