我试图通过使用检索到的列表上的Select OR Where子句编写LINQ查询。但是,列表没有列名,只有值存在。 所以我的问题是如何根据此条件获取值?
例如该列表包含“已批准”,“保留”状态。但是,我只想从列表中获取“已批准”状态的记录。 下面是我的代码
SpreadsheetsResource.ValuesResource.GetRequest request = service.Spreadsheets.Values.Get(spreadsheetId, range);
ValueRange response = request.Execute();
IList<IList<object>> values = response.Values;
下面是屏幕快照,显示值在列表中的显示方式
名称为“值”的列表包含所有记录。
任何帮助,将不胜感激!
答案 0 :(得分:4)
您的数据作为集合返回,因此您可以通过其数字索引访问属性,例如
var approvedResults = values.Where(c => c[7] == "Approved");
或者您可以将其映射到适当的对象,例如
public class MyResultObject {
public DateTime date {get; set;}
public string FirstName {get; set;}
...
public string ApprovedStatus {get; set;}
public MyResultObject(string[] values)
{
date = DateTime.Parse(values[0]);
FirstName = (string) values[1];
...
etc.
}
}
然后使用linq将您的数据转换为一堆数据,这会更好。
var myResultObjects = values.Select(c => new MyResultObject(c.Select(x => (string)x).ToArray());
您可能需要调整一些代码,因为我不确定ValueRange
的工作原理,我只是在不检查的情况下输入了代码,但这就是要点。
然后您可以做myResultObjects.Where(c => c.ApprovedStatus == "Approved");
,这会更好。
答案 1 :(得分:-1)
我通过使用下面的代码行实现了这一点
var result = values.Where(x => x.Contains("Approved")).ToList();
这只会给我提供“已批准”状态的记录。
谢谢!