我想根据要发送到IoT中心的一些变量设置Azure表的前两列(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; }
}
在这里,我设法将这些行设置为当前日期和时间,但是我的意愿是将它们设置为接收到的其他变量,例如cameraName
和dateTime
,而无需复制它们(设法通过以下两行做到了这一点,但只是重复了列):
myIoTHubMessage.PartitionKey = myIoTHubMessage.cameraName;
myIoTHubMessage.RowKey = myIoTHubMessage.dateTime;
有没有办法将3个变量作为列?
答案 0 :(得分:1)
我不确定我是否正确理解您,但是您希望输出具有3个属性: 分区键,行键和区域?
如果是,则尝试定义用于输出的新类并使用它返回数据:
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; }
}