C#LINQ如何获取数据表column <string>的最大值,其中值类似于'N01%'

时间:2019-02-03 22:23:42

标签: c# sql linq

我需要帮助,如何获得MAX datatable列值,其中值LIKE'N01%'

基本上,如果我将其转换为SQL:

SELECT MAX(user) FROM tblUser WHERE user LIKE 'N01%'

谢谢。

3 个答案:

答案 0 :(得分:0)

var result = foo.tblUser.Where(u => u.user.StartsWith("N01")).Max(u => u.user));

只需使用where语句来启动过滤器,然后使用StartsWith来模拟SQL的xx%模式。然后在特定列上使用Max。尽管请确保User实际上是一个Max值。

答案 1 :(得分:0)

您可以简单地执行以下操作:

string[] data = {"hello", "N01jaja", "N01ll"};

var userWithN1 = data.Where(we => we.StartsWith("N01")).Max();

StartsWith检查元素是否以某个字符串开头。

如果有一个类,则需要实现IComparable

示例代码:

public class TestClass : IComparable<string>
{
    public string Value { get; private set; }

    public int CompareTo(string other) { return Value.CompareTo(other); }
}

答案 2 :(得分:-1)

在LINQ中,我总能找到解决问题的方法。在这种情况下,这里有一个项目列表,您想使用WHERE子句来缩小列表范围,并返回剩余项目的MAX。

开始

var myItems = db.GetMyList();

喜欢的地方 假设用户是一个字符串变量

myItems = myItems.Where(x=>x.User.StartsWith("N01"));

MAX

var maxItem = myItems.Max(x=>x.User);

在一起

var maxItem = db.GetMyList().Where(x=>x.User.StartsWith("N01")).Max(x=>x.User);

edit -由于搜索字符串为'N01%',因此下面的每个注释都应以开头,而不包含。