ユーザー入力に一致する列値を持つデータテーブルから行値を取得しようとしています。
私はこのリンクを見つけました:
データテーブルから特定の列の値を取得するにはどうすればよいですか?
でも言いたいのでよくわかりません
where userID =@userinput and DateBooked =@DateBooked and
RoomQty=@RoomQty and NoofNights=@NoofNights
。
この例は私の状況で機能しますか?
ユーザー入力に一致する列値を持つデータテーブルから行値を取得しようとしています。
私はこのリンクを見つけました:
データテーブルから特定の列の値を取得するにはどうすればよいですか?
でも言いたいのでよくわかりません
where userID =@userinput and DateBooked =@DateBooked and
RoomQty=@RoomQty and NoofNights=@NoofNights
。
この例は私の状況で機能しますか?
提供されたリンクの例に従うことができるはずです。
このような 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'
ます (where 条件に基づいて単一のレコードがある場合)。
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();
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"));