列出包含字符串值的项目

时间:2014-10-08 15:45:35

标签: c# asp.net-mvc-4 asp.net-mvc-viewmodel

我有一个包含电话号码字符串的对象列表,我想创建一个查询来查找包含任意数字的对象列表。

这是模型:

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; }

上任何位置的区号513

我知道如何查找具有完全相同的项目,但不是这样的。

任何帮助都将不胜感激。

4 个答案:

答案 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);
}