如何从Datatable获取列值

时间:2012-05-13 22:51:30

标签: c# .net datatable datarow

我正在尝试从列数值与用户输入匹配的数据表中获取行值。

我找到了这个链接:

How to get a specific column value from a datatable?

但我不确定,因为我希望能够说出

where userID =@userinput and DateBooked =@DateBooked and 
RoomQty=@RoomQty and NoofNights=@NoofNights

这个例子适用于我的情况吗?

2 个答案:

答案 0 :(得分:2)

您应该可以按照提供的链接中的示例进行操作。

假设你有一个像这样的DataTable

            DataTable dt = new DataTable();
            dt.Columns.Add("UserID");
            dt.Columns.Add("FullName");
            dt.Columns.Add("DateBooked");
            dt.Columns.Add("RoomQty");
            dt.Columns.Add("NoofNights");

            dt.Rows.Add(1, "John Doe", DateTime.Now.AddDays(-7).Date, 2, 3);
            dt.Rows.Add(2, "Jack Sparrow", DateTime.Now.AddDays(-14).Date, 1, 1);
            dt.Rows.Add(3, "Arthur Wilson", DateTime.Now.AddDays(-10).Date, 2, 2);
            dt.Rows.Add(4, "Amy Jackson", DateTime.Now.AddDays(-5).Date, 4, 2);
            dt.Rows.Add(5, "Tim Lee", DateTime.Now.AddDays(-1).Date, 1, 5);
            dt.Rows.Add(2, "Jack Sparrow", DateTime.Now.AddDays(-5).Date, 3, 2);

,输入参数为

            int userInput = 2;
            DateTime dateBooked = DateTime.Now.AddDays(-14).Date;
            int roomQty = 1;
            int noOfNights = 1;

您可以像这样获得'FullName'列值(前提是您将根据您的具体情况获得一条记录)

            string FullName = (from DataRow dr in dt.Rows
                               where Convert.ToInt32(dr["UserID"]) == userInput &&
                               Convert.ToDateTime(dr["DateBooked"]) == dateBooked &&
                               Convert.ToInt32(dr["RoomQty"]) == roomQty &&
                               Convert.ToInt32(dr["NoofNights"]) == noOfNights
                               select (string)dr["FullName"]).FirstOrDefault();

答案 1 :(得分:0)

IEnumerable<String> userNames =
    dataTable
    .AsEnumerable()
    .Where(row =>
        row.Field<Int32>("userID") == userinput &&
        row.Field<DateTime>("DateBooked") == dateBooked &&
        row.Field<Int32>("RoomQty") == roomQty &&
        row.Field<Int32>("NoofNights") == noofNights)
    .Select(row => row.Field<String>("userName"));