我有一个ID列表,其中ID以MB(对于成员)或NM(对于非成员)开头。
ID会像MB-101或NM-108等......
我正在尝试选择以MB开头的最高ID,然后添加1,然后保存回DB。保存很简单,但我不确定如何查询最高成员或非成员ID并添加一个。非常感谢任何帮助
答案 0 :(得分:1)
您可以这样做:
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
您可以对非会员ID执行相同操作。它是经过测试的代码,它成功解决了您的问题。
希望它有所帮助。
答案 1 :(得分:1)
您可以通过拆分列表获得最大ID:
var ids = yourList.Where(x => x.ID.StartsWith("MB-")).Select(x => new { ID = x.ID.Split('-')[1] }).ToList();
var maxIdValue = ids.Select(x => int.Parse(x.ID)).ToList().Max();
如果你想要从MB-和NB-开始的最大id,你可以删除上面的条件。通过这个,它将从MB-和NB-获取最大id。以下将是查询:
var ids = yourList.Select(x => new { ID = x.ID.Split('-')[1] }).ToList();
var maxIdValue = ids.Select(x => int.Parse(x.ID)).ToList().Max();
答案 2 :(得分:1)
你可以这样尝试
List<string> lststr = new List<string>() { "MB-101", "MB-103", "MB-102", "NM-108" };
var result = "MB-"+ lststr
.Where(x=>x.Contains("MB"))
.Select(x => Regex.Replace(x, @"[^\d]", ""))
.OrderByDescending(x=>x)
.FirstOrDefault();
它将返回MB-103
,因为它会首先检查字符串是否包含MB
,然后它会替换除""
以外的所有内容,而OrderByDescending
将按顺序排序因此,最高值将位于顶部,最后FirstOrDefault
将获得第一个值
答案 3 :(得分:0)
您必须将 MB 或 NM 替换为空,然后从订购中获取 FirstOrDefault ,才能对您的列表执行 OrderByDescending 名单。请查看以下示例。
CODE:
List<string> list = new List<string>() { "MB-101", "MB-102", "MB-109", "MB-105", "NM-110"};
var maxMember = list.OrderByDescending(m=>Convert.ToInt16(m.Replace("MB-","").Replace("NM-",""))).ToList().FirstOrDefault();
Console.WriteLine(maxMember.ToString());