我有一个包含电话号码字符串的对象列表,我想创建一个查询来查找包含任意数字的对象列表。
这是模型:
public class ReportViewModel
{
public int QueueReportId { get; set; }
public string Message { get; set; }
public string PhoneNumber { get; set; }
public bool Sent { get; set; }
public DateTime Day { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime SentDate { get; set; }
}
我向视图发送了一个ReportViewModel列表,如果电话号码不是完全匹配,有没有办法对通过电话号码发送到视图的列表进行排序?
例如,我想在列表中搜索具有电话号码的对象,该电话号码包含public string PhoneNumber { get; set; }
我知道如何查找具有完全相同的项目,但不是这样的。
任何帮助都将不胜感激。
答案 0 :(得分:1)
您可以使用Any()
方法并传递一个表达式,使用Contains
字符串方法在PhoneNumber
字符串属性中检查它,以获取示例:
// get your list
List<ReportViewModel> reports = GetReports();
string areaCode = "513";
// check if any object has a phone value in any part of string
if (reports.Any(r => r.PhoneNumber.Contains(areaCode)))
{
// contains the phone number
}
答案 1 :(得分:1)
听起来你想使用LINQ的Where
:
List<ReportViewModel> reports = //....
foreach(var report in reports.Where(r => r.PhoneNumber.Contains("513"))
{
//do something for each report
}
答案 2 :(得分:1)
你的意思是:
List<string> areaCode= new List<string>() { "somecode123", "somecode321", "somecode456", };
并且您希望找到模块化&#34; ReportViewModel&#34;上的areaCode列表中任何项目的匹配项。
如果是,那么这应该有效:
var records = new List<ReportViewModel>;
var results = records.Where(q => areaCode.Any(t => q.PhoneNumber.Conatins(t)));
这应该有帮助,请匹配支架。
答案 3 :(得分:0)
如果我正确理解您的问题is there a way to sort that list that is being sent to the view by phone number if the phone number is not an exact match?
如果电话号码在列表中不匹配,您可以按照以下方式对列表进行排序。
public ActionResult Index()
{
....
var reportsvm = GetReports();
if (!reportsvm.Any(x => x.PhoneNumber.Contains("513")))
{
reportsvm = reportsvm.OrderBy(x => x.PhoneNumber).ToList();
// reportsvm = reportsvm.OrderByDescending(x => x.PhoneNumber).ToList(); // if you want in descending order
}
return View(reportsvm);
}