gpt4 book ai didi

c# - 理解Func, string>的C#方法

转载 作者:行者123 更新时间:2023-12-04 08:23:00 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Explanation of Func

(4 个回答)


8 个月前关闭。




我有来自不同来源的这段代码,其中目标是在匹配定义的模式后读取 CSV 文件,然后将其复制到表格数据库中。在将文件复制到表格数据库之前,CSV 文件必须具有以下两列:PartitionKeyRowKey .如果分区键不存在,那么它应该采用作为参数传递的 ID。下面是代码,我不明白是什么Func<Dictionary<>,string>部分正在做。有人可以向我解释它的用途以及它是如何工作的吗?
//主函数 WriteToTable 是这样调用的:

 await WriteToTable(lines, dataclass,
p => documentId,
p => $"{dataclass.SubType}_{p["RowKey"].Int32Value.Value.ToString("D10")}", upsert);
//写入表
public async Task WriteToTable(string lines, DataClass dataclass,
Func<Dictionary<string, EntityProperty>, string> genPartitionKey,
Func<Dictionary<string, EntityProperty>, string> genRowKey, bool upsert)
{
const int BatchSize = 100;
if (HasPartitionAndRowKey(dataclass.TableSchema.Fields))
{
genPartitionKey = (Dictionary<string, EntityProperty> props) => props["PartitionKey"].StringValue;
genRowKey = (Dictionary<string, EntityProperty> props) => props["RowKey"].ToString();
}

var tableRecords =ReadCSV(lines, dataclass.TableSchema.Fields)
.Select(props => new DynamicTableEntity(genPartitionKey(props), genRowKey(props), string.Empty, props))
.ToList();
await batchInsertIntoTableStorage(BatchSize,tableRecords, upsert);


}

static readonly string[] RequiredTableKeys = { "PartitionKey", "RowKey" };

private bool HasPartitionAndRowKey(List<TableField> fields)
{
return fields.Select(f => f.Name).Intersect(RequiredTableKeys).Count() == RequiredTableKeys.Length;
}

最佳答案

这是 func 工作的最简单方式

public bool Validate(Func<string,bool> dependentMethod)
{
string parmeter = "after execution inside method";
bool isvalid = dependentMethod(parmeter);

return isvalid;

}

public bool DependentMethod(string input)
{
// process there statement and return out put after your business logics

return true;
}

public void CheckValidation()
{
bool isValid= Validate(DependentMethod);
}
根据你的方法
public async Task WriteToTable(string lines, DataClass dataclass,
Func<Dictionary<string, EntityProperty>, string> genPartitionKey,
Func<Dictionary<string, EntityProperty>, string> genRowKey, bool upsert)
这是你的方法头,这里有两个 func genPartitionKey,genRowKey
执行中
 if (HasPartitionAndRowKey(dataclass.TableSchema.Fields))
{
genPartitionKey = (Dictionary<string, EntityProperty> props) => props["PartitionKey"].StringValue;
genRowKey = (Dictionary<string, EntityProperty> props) => props["RowKey"].ToString();
}
如果检查为真,那么他会重新分配您的方法 genPartitionKey=(Dictionary<string, EntityProperty> props)=>{return props["RowKey"].ToString();}和第二个一样
在这个表达中,他称这两种方法 var tableRecords =ReadCSV(lines, dataclass.TableSchema.Fields).Select(props => new DynamicTableEntity(genPartitionKey(props), genRowKey(props), string.Empty, props)).ToList();正如我所说的 Validate(DependentMethod);

关于c# - 理解Func<Dictionary<string, EntityProperty>, string>的C#方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65405507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com