簡體   English   中英

Asp.Net MVC5 Linq查詢以檢查表中的數據

[英]Asp.Net MVC5 Linq query to check data in table

我正在嘗試編寫LINQ查詢,該查詢將對照用戶估算的值檢查表中的數據。 這樣做的目的是為供應商分配一個計划,其中包含他們必須針對該用戶完成的時間。 這是通過計划模型和控制器完成的。 然后,供應商必須在此處完成針對用戶的實際完成時間。 在此階段,供應商正在填寫時間表,因此,我希望檢查時間是否大於分配給他們的時間。

我嘗試使用以下查詢

 var Time = db.Plans.Any(s => (s.CustomerId == timeSheet.CustomerId) && ((s.Monday <= plan.Monday)));

但這似乎不起作用

我的模型是:時間表

  public class TimeSheet
{
    public int TimeSheetId { get; set; }
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/M/yy}")]
    public DateTime? WeekCommencing { get; set; }
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/M/yy}")]
    public DateTime? WeekEnding { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Monday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Tuesday{ get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Wednesday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Thursday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Friday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Saturday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Sunday { get; set; }

    public int? CustomerId { get; set; }
    public virtual Customer customer { get; set; }

    public bool CompletedTimeSheet { get; set; }

計划模型:

public class Plan
{
    [Key]
    public int PlanId { get; set; }
    [DataType(DataType.Time)]
    [Range(typeof(TimeSpan), "00:00", "12:00")]
    [DisplayFormat(DataFormatString = @"{0:hh\:mm\:ss}")]
    public TimeSpan? Monday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Tuesday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Wednesday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Thursday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Friday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Saturday { get; set; }
    [DataType(DataType.Time)]
    public TimeSpan Sunday { get; set; }

    public int CustomerId { get; set; }
    public int AgreementId { get; set; }

    [HiddenInput(DisplayValue = false)]
    public bool CustomerHasPlan { get; set; }

和時間表控制器:

    // GET: TimeSheets/Create
    public ActionResult Create(int? ID)
    {
        if(ID == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        TimeSheet model = new TimeSheet();
        // model.FullName = Name;
        model.CustomerId = ID;
        return View(model);
    }


    // POST: TimeSheets/Create
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Create([Bind(Include = "TimeSheetId,WeekCommencing,WeekEnding,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday,CompletedTimeSheet,CustomerId,Total")] TimeSheet timeSheet, Plan plan)
    {

        if (ModelState.IsValid)
        {
            var Monday_test = db.TimeSheets.Any(s => (s.CustomerId == timeSheet.CustomerId) && (s.Monday <= timeSheet.Monday));
            if (!Monday_test)
            {

                db.TimeSheets.Add(timeSheet);
                db.SaveChanges();
                return RedirectToAction("Index");

            }

            else
            {
                return View("Error");
            }
        }

        return View(timeSheet);
    }

希望有人能看到我在做錯事。

謝謝

不能真正說出查詢在做什么,但是通過查看查詢並將其與模型進行比較,您將星期一拼寫錯誤為“ Maonday”。

嘗試:

 var Time = db.Plans.Any(s => (s.CustomerId == timeSheet.CustomerId) && ((s.Monday <= plan.Monday)));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM