gpt4 book ai didi

c# - 如何在 C# 中找到 varchar 的最高版本?

转载 作者:太空狗 更新时间:2023-10-30 00:26:16 26 4
gpt4 key购买 nike

我正在尝试获取 C# 程序的最新版本。下面的代码是我能够让代码在我的 Controller 中无任何错误地运行的唯一方法:

PList = PList.Where(x => x.PSP == LP && x.VERSION == "1.3");

问题是,除非我在每个新版本中都维护此代码,并在代码中将其更正为最新版本,否则它将无法正常工作。

所以我想我可以使用 max 函数来获取最新版本,但它是 SQL DB 中的一个 varchar,我无法更改它,因为我无权更改类型。

我已经尝试了不同的方法来做到这一点,就像下面的例子一样,但没有成功。

PList = PList.Where(x => x.PSP == LP && x.VERSION.MAX());

运算符“&&”不能应用于“bool”和“char”类型的操作数

那么当我需要知道 PSP 是否等于 LP AND 版本是数据库中的最高数字时,我如何才能获得 Max 版本?感谢您的帮助!

更新

谢谢大家的出色回答,我可以看到其中一些可能如何独立工作,但没有一个与我的代码一起工作。我认为发布其余代码可能有助于更轻松地诊断问题,因此这是其余代码。

public virtual ActionResult getAjaxP(string TP = null)
{
if (TP != null)
{
var PList = from x in db.iamp_mapping select x;
PList = PList.Where(x => x.PSP == TP);
return Json(PList.Select(x => new { x.PS }).Distinct().ToArray(), JsonRequestBehavior.AllowGet);
}
return View();
}

最佳答案

您可以利用 System.Version类。

var maxVersion = PList
.Select(x => new Version(x.VERSION))
.Max()
.ToString();

PList = PList.Where(x => x.PSP == LP && x.VERSION == maxVersion);

例如,这将有利于“1.11”而不是“1.3”。

如果这是 Linq-to-Sql,它可能涉及对数据库的额外调用。

关于c# - 如何在 C# 中找到 varchar 的最高版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12081590/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com