如何使用c#.net在datatable中搜索行

时间:2017-06-13 06:09:39

标签: c# select datatable ienumerable

我在c#.net中有一个带有以下列的数据表所以首先填写这个数据表,然后我尝试通过搜索从中获取数据。

 void CalculateEzafkari2()
        {
            calEzaf = new DataTable();
            calEzaf.Columns.Add("IDp");
            calEzaf.Columns.Add("duration");
            calEzaf.Columns.Add("date", typeof(DateTime));
            calEzaf.Clear();
            foreach (var item in EzafArray)
            {
                if (item.Value.Count()%2==0)
                {
                    for (int i = 0; i < item.Value.Count(); i = i + 2)
                    {
                        DateTime dt1 = DateTime.Parse(item.Value[i]);
                        DateTime dt2 = DateTime.Parse(item.Value[i + 1]);
                        TimeSpan tp = dt2 - dt1;
                        calEzaf.Rows.Add(item.Key, tp.ToString(), dt1);
                    }
                }
                else
                {
                    for (int i = 0; i < item.Value.Count()-1; i = i + 2)
                    {
                        DateTime dt1 = DateTime.Parse(item.Value[i]);
                        DateTime dt2 = DateTime.Parse(item.Value[i + 1]);
                        TimeSpan tp = dt2 - dt1;
                        calEzaf.Rows.Add(item.Key, tp.ToString(), dt1);
                    }
                }
            }
        }

所以我使用下面的代码从中提取数据我无法获取数据。这个函数不返回数据。

public string ReadEzafKariFromDataTable(string IDp, DateTime dt)
        {
            string[] d = dt.ToString().Split(' ');

            IEnumerable<DataRow> selectedRows =
                calEzaf.AsEnumerable().Where(row => (row.Field<DateTime>("date").Equals(d[0])) && row.Field<int>("IDp")==(int.Parse(IDper)));
            foreach (DataRow row in selectedRows)
            {
                return row["duration"].ToString();
            }
            return "";
        }

1 个答案:

答案 0 :(得分:0)

尝试使用以下代码:

 IEnumerable<DataRow> selectedRows = calEzaf.AsEnumerable().Where(row => row.Field<DateTime>("date").Date == dt.Date && row.Field<int>("IDp") == int.Parse(IDper));