我正在寻找一种将所选月份从日期选择器传递到我查询的方法,以使查询动态。如何将 9 替换为日期点的月份?我在想 a.smonth = dateTime.month(mdate))的线条,但它不起作用。简单的建议非常欢迎。谢谢!
ps:桌子上的smonth很长。
namespace Location.ViewModel
{
public class LocationViewModel: INotifyPropertyChanged
{
public LocationViewModel()
{
var db = new DailyEntities();
Efficiency = Convert.ToDecimal(db.LocationKPI.Where(a => a.sMonth == 9).Select(a => a.Efficiency).FirstOrDefault());
}
private DateTime _mDate = DateTime.Now;
public DateTime MDate
{
get { return _mDate; }
set { _mDate = value; OnPropertyChanged("MDate"); }
}
decimal efficiency;
public decimal Efficiency
{
get { return efficiency; }
set
{
efficiency = value;
OnPropertyChanged("Efficiency");
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected virtual void OnPropertyChanged(string propertyName = null)
{
if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
以下代码将从9月30日的日期开始获得数字9。
var MDate = new DateTime();
MDate = DateTime.Now;
var month = 0;
int.TryParse(MDate.ToString("MM"), out month);
我已经使用了MDATE变量名称,因此它适合您的现有代码,因此您可以忽略前两行。
DateTime.ToString("MM")
以" 09"的格式获取一个月,但是如果我们尝试将其与整数9进行比较,则整数将被隐式转换为字符串" 9"。由于" 9"one_answers" 09"不匹配,因此我们必须将" 09"转换为整数。int.TryParse()
是最安全的方法。
现在您有一个月份中的一个月,可以在查询中使用它。
public LocationViewModel()
{
var db = new DailyEntities();
// Get the month from the date picker
var month = 0;
int.TryParse(MDate.ToString("MM"), out month);
Efficiency = Convert.ToDecimal(db.LocationKPI.Where(a => a.sMonth == month).Select(a => a.Efficiency).FirstOrDefault());
}