It's unclear whether you want to (1) Get Data Fields only and Update Data Fields only or (2) you need to Update Data Fields from Selection - when in doubt I'll write both approaches. If your requirement is item (2), you may want to map/model the business rule to develop the routine. According to Microsoft Docs, the following examples:
(1) Get Data Fields only:
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var queryOptions = new List<QueryOption>()
{
new QueryOption("expand", "fields(select=Field1,Field2,Field3)")
};
var items = await graphClient.Sites["{site-id}"].Lists["{list-id}"].Items
.Request( queryOptions )
.GetAsync();
(1) Update Data Fields only:
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var fieldValueSet = new FieldValueSet
{
AdditionalData = new Dictionary<string, object>()
{
{"Field1", "Test1"},
{"Field2", "Test2"}
}
};
await graphClient.Sites["{site-id}"].Lists["{list-id}"].Items["{listItem-id}"].Fields
.Request()
.UpdateAsync(fieldValueSet);
(2) Update Data Fields from Selection example:
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var queryOptions = new List<QueryOption>()
{
new QueryOption("expand", "fields(select=Field1,Field2,Field3)")
};
var items = await graphClient.Sites["{site-id}"].Lists["{list-id}"].Items
.Request( queryOptions )
.GetAsync();
foreach(var item in items)
{
//an example of Business Rule: Update item based by some Select into current item
if(null != item.Fields.AdditionalData["Field1"] && !string.IsNullOrWhiteSpace(item.Fields.AdditionalData["Field1"].ToString()))
{
var fieldValueSet = new FieldValueSet
{
AdditionalData = new Dictionary<string, object>()
{
{"Field2", "Test2"},
{"Field3", "Test3"}
}
};
await graphClient.Sites["{site-id}"].Lists["{list-id}"].Items[item.Id.ToString()].Fields
.Request()
.UpdateAsync(fieldValueSet);
}
}