我正在處理谷歌電子表格,用戶連接它的電子表格,系統在一天結束時將資料推送到用戶連接的電子表格。這里是電子表格列列的順序是
"PatientName","DOB","StripeId","Card","ChargeCreated","Status","Amount"
這是使用的代碼
var GoogleSpreadSheetData = db.GoogleSpreadSheetDatas
.ToList()
.Select(x => new List<string>{
x.PatientName.Trim(),
x.DOB.Trim(),
x.StripeId.Trim(),
x.Card.Trim(),
x.ChargeCreated.Trim(),
x.Status.Trim(),
x.Amount.Trim(),
})
.ToList();
谷歌電子表格列和查詢回傳的序列是相同的序列
"PatientName","DOB","StripeId","Card","ChargeCreated","Status","Amount"
,資料將映射到電子表格參考影像中的確切列。
如果用戶像此影像那樣更改列的順序,則將列替換PatientName為DOB. 當下一次資料推送到電子表格PatientName資料被推送到DOB列中時,反之亦然。
在將資料推送到電子表格之前,首先我呼叫 google API(使用 Developer Metadata)來獲取該電子表格的序列,我得到了更新的列序列作為回應。
My question is
如何更改查詢選擇的順序?我可以在查詢選擇時或之后重新排列串列嗎?
請幫助解決這個問題。謝謝你。
uj5u.com熱心網友回復:
假設您的 MetaData 查詢為您提供了一個List<string>列名:
List<string> spreadsheetColSeq;
然后您可以查詢資料庫以檢索行:
var dbData = db.GoogleSpreadSheetDatas
.Select(x => new List<string> {
x.PatientName.Trim(),
x.DOB.Trim(),
x.StripeId.Trim(),
x.Card.Trim(),
x.ChargeCreated.Trim(),
x.Status.Trim(),
x.Amount.Trim(),
})
.ToList();
然后您可以創建從查詢順序到電子表格順序的映射,并對每一行重新排序List<string>以匹配新順序:
var origSeq = new[] { "PatientName", "DOB", "StripeId", "Card", "ChargeCreated", "Status", "Amount" };
var colOrder = spreadsheetColSeq
.Select(colName => Array.IndexOf(origSeq, colName))
.ToList();
var GoogleSpreadSheetData = dbData
.Select(row => colOrder.Select(idx => row[idx]).ToList())
.ToList();
注意:如果列可能被洗掉,這將崩潰,因為Array.IndexOf將回傳-1缺失值。您可以colOrder通過.Where(idx => idx > -1)在ToList()跳過缺少的列之前添加來進行過濾。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/361968.html
下一篇:npmexpress找不到中間件
