我有一个带有1-3个表的DataSet,每个表都有一个名为m_date(字符串)的列 我想使用LINQ从所有这些产品中获得最大价值。
我知道如何获取每个表的最大值:
var maxDate=ds.Tables[index].AsEnumerable()
.Max(x=>DateTime.Parse(x["m_date"].ToString())).ToString();
但是我不知道如何从所有表信息中获取最大值
编辑:
我现在有类似的东西可以工作:
DateTime maxDate=DateTime.MinValue;
foreach (DataTable tbl in ds.Tables)
{
DateTime maxDateCur=ds.Tables[index].AsEnumerable()
.Max(x=>DateTime.Parse(x["m_date"].ToString()));
maxDate=new DateTime[] {maxDateCur,maxDate}.Max();
}
但是我感觉可以做得更好。
答案 0 :(得分:5)
您可以按照以下方式进行操作:
var maxDate = Enumerable.Range(0, ds.Tables.Count)
.SelectMany(index => ds.Tables[index].AsEnumerable())
.Max(dataRow => dataRow.Field<DateTime>("m_date"))
.ToString();
Enumerable.Range
生成索引,使我们能够访问每个单独的DataTable
。SelectMany
获得一个IEnumerable<DataRow>
Max
获取最大值并将其转换为字符串。稍有不同的变体是:
var maxDate = Enumerable.Range(0, ds.Tables.Count)
.Select(index =>
ds.Tables[index].AsEnumerable()
.Max(dataRow => dataRow.Field<DateTime>("m_date")))
.Max().ToString();
Enumerable.Range
生成索引,使我们能够访问每个单独的DataTable
。Select
获得一个IEnumerable<DateTime>
,该DateTime
由每个DataTable
的最大Max
组成func createPostRequestWith(path: String?,
parameters: [String : Any]? = nil,
success : @escaping (Any?) -> (),
failure : @escaping (NSError) -> ()) {
if !(Alamofire.NetworkReachabilityManager()?.isReachable)! {
let error = NSError(domain: "", code: -1003, userInfo: nil)
failure(error)
} else {
guard let url = path else { return }
Alamofire.request(url, method: .post, parameters: parameters, encoding: JSONEncoding.default, headers: createCurrentHeader()).validate(statusCode: 200..<300).responseJSON {
response in
switch response.result {
//Remove loader here either after parsing or on error
case .success(let data):
success(data)
case .failure(let error):
print(error)
if let responseData = response.data {
var parsedResponseData = JSON.init(data: responseData)
let customError = NSError(domain: parsedResponseData["message"].stringValue, code: response.response?.statusCode ?? 555, userInfo: nil)
failure(customError as NSError)
} else {
failure(error as NSError)
}
}
}
}
}
获取DateTime的最大值,然后转换为字符串表示形式。