我已经做了很多寻找和搞乱代码,我还没有找到一种方法来对export class DynamicForm implements OnInit {
data:Data;
formModel:ControlGroup;
constructor(private fb:FormBuilder) {
this.formModel = fb.group({
heading: fb.control('test heading', Validators.required),
entries: fb.array([])
})
}
ngOnInit():void {
/* init the heading */
this.data = new Data('test heading');
/* init the entries > add to model, create control and add it to ControlArray */
[
new Entry('1', 'one'),
new Entry('2', 'two'),
new Entry('3', 'three'),
new Entry('4', 'four'),
].forEach((e:Entry) => this.add(e));
}
add(e:Entry):void {
let id:string = e ? e._id : '';
let title:string = e ? e._title : '';
(<ControlArray>this.formModel.controls['entries']).push(this.fb.group({
id: this.fb.control(id, Validators.required),
title: this.fb.control(title, Validators.required),
}));
this.data.entries.push(new Entry(id, title));
}
get debug() {
return JSON.stringify({debug_data: this.data});
}
get debugForm() {
return JSON.stringify({
debug_form: {
dirty: this.formModel.dirty,
pristine: this.formModel.pristine,
touched: this.formModel.touched,
untouched: this.formModel.untouched,
valid: this.formModel.valid,
}
});
}
get ctrlCount() {
return (<ControlArray>this.formModel.controls['entries']).length;
}
}
进行Linq查询。我知道这与标准IReliableDictionary
不一样,但如果有人有运气我很好奇。我开始认为不幸的是,这是不可能的。
答案 0 :(得分:3)
目前,在可靠的字典上执行linq查询没有正常的方法。话虽这么说,你可以做一些事情。如前所述,CreateEnumerableAsync方法存在的原因是因为服务结构将可靠的字典页面设置为磁盘,但是如果您知道底层集合很小并且您可以获得性能损失,则以下类将起作用。
append
您还可以实现自己的自定义枚举器和扩展方法,以高效的方式对数据执行linq-query操作。我已经写了一些我想要发布的内容但是他们需要先修饰一下。我有一种偷偷摸摸的感觉,服务面料团队可能已经在它上面,但是如果发生这种情况,你的猜测就像我的一样好。
答案 1 :(得分:1)
看起来MS在最新的SF版本中删除了执行linq查询的功能。
答案 2 :(得分:0)
如果您需要处理比简单GetByKey()
更复杂的操作,您需要通过IReliableDictionary.CreateEnumerable()
方法显式创建它的本地集合,然后您可以查询类似的来自the comments in this discussion的以下示例:
IAsyncEnumerable<KeyValuePair<int, string="">> enumerable = await myDictionary.CreateEnumerableAsync(tx);
using (IAsyncEnumerator<KeyValuePair<int, string="">> e = enumerable.GetAsyncEnumerator())
{
while (await e.MoveNextAsync(cancellationToken).ConfigureAwait(false))
{
doSomething(e.Current);
}
}
这可能根本不适合您的场景,但似乎它可能是执行任何类型的“高级查询”的唯一方法。
答案 3 :(得分:0)
右LINQ不适用于IAsyncEnumerator
var wgEnumerable = await voteDictionary.CreateEnumerableAsync(tx);
using(IAsyncEnumerator<KeyValuePair<string, int>> enumerator = wgEnumerable.GetAsyncEnumerator())
{
while(await enumerator.MoveNextAsync(CancellationToken.None))
{
//Do something
}
}
答案 4 :(得分:0)
在将SerivceFabric的 @Autowired
private MapValidationErrorService mapValidationErrorService;
@PostMapping("/employee/{deptId}")
public ResponseEntity<?> addEmployee(@PathVariable(name = "deptId") String deptId,@Valid @RequestBody EmployeeDto employeeDto, BindingResult result) throws ClassNotFoundException {
ResponseEntity<?> errorMap = mapValidationErrorService.MapValidationService(result);
if(errorMap != null)return errorMap;
return ResponseEntity.ok(employeeService.saveEmployee(deptId,employeeDto));
}
转换为dotnet 1之后,可以使用Async Linq。
请参考以下答案: Convert IReliableDictionary to IList