我正在使用
之类的数字在数据库中搜索数据。7892811111 8049311111 725931111
但是当我在屏幕上获取结果时,它以随机顺序显示在数字栏中的下图,如下图所示,它将以随机顺序显示结果
但是我想按照数字搜索的顺序在屏幕上显示结果,就像我在数字下方搜索一样
7892811111 8049311111 725931111
然后,当我在number列中得到结果时,第一个记录必须是7892811111,然后是8049311111,最后一个必须是725931111。
当我得到结果时,我会将记录添加到列表中
List<NumberDetails> lstNumberDetails = new List<NumberDetails>();
NumberDetails numDetails = new NumberDetails();
numDetails.Full_Name = dr["Full_Name"].ToString();
numDetails.Number = Convert.ToInt64(dr["Number"].ToString());
numDetails.Address = dr["Address"].ToString();
numDetails.Date = DateofRun.ToString();
numDetails.Circle = dr["Circle"].ToString();
numDetails.Operator = dr["Operator"].ToString();
lstNumberDetails.Add(numDetails);
我将lstNumberDetails
分配为ItemSorce
的{{1}}。
因此可以将DataGrid
中的Number与array进行比较,因为array包含搜索数字的顺序。
请帮助我解决此问题。
答案 0 :(得分:1)
我没有足够的声誉,所以在答案中发布。
您可以遍历搜索数组并使用 LINQ FirstOrDefault()查找匹配的模型并将其添加到网格数据源。
您可以这样做
public void Search(string[] searches)
{
List<NumberDetails> lstNumberDetails = new List<NumberDetails>();
lstNumberDetails = GetNumbersFromDatabase();
List<NumberDetails> gridItemSource = new List<NumberDetails>();
foreach (var item in searches)
{
var modelLst = lstNumberDetails.Where(x => x.Number == item);
if (modelLst.Any())
gridItemSource.AddRange(modelLst);
}
gridName.ItemSource = gridItemSource;
}
答案 1 :(得分:1)
如果可以,请将string[]
更改为List<string>
,以便可以使用IndexOf
方法。
然后您可以对其他列表进行排序:
lstNumberDetails = lstNumberDetails.OrderBy(i => searches.IndexOf(i.Number)).ToList();