สกินที่ฉันเขียนใช้เฉพาะข้อความที่ไม่มีค่าเพื่อให้ดูดี ตอนนี้ใช้วิธีนี้เพื่อแก้ไขวิธีที่ไม่สะดวกในการรับเฉพาะค่าจากข้อความเท่านั้น แน่นอนคุณสามารถส่งคืนได้เพียงสองรายการนี้เท่านั้น
รหัส
/// <สรุป>
/// รับดัชนีตามชื่อคอลัมน์
/// </สรุป>
/// <param name="fiId">ชื่อคอลัมน์</param>
/// <returns>ดัชนีคอลัมน์</returns>
สตริงส่วนตัว GetFunctionNameByName (ชื่อสตริง)
-
ผลลัพธ์ var = this.objWSM.GetFunctionInfo().AsEnumerable().Where(f1 => f1["fiName"].ToString().Trim() == Name.ToString().Trim()).FirstOrDefault() ;
กลับผลลัพธ์ ["fiId"].ToString();
-
GetFunctionInfo เป็นวิธีการที่สอบถามข้อมูลทั้งหมดในตาราง
/// <สรุป>
/// รับชื่อคอลัมน์ตามดัชนีคอลัมน์
/// </สรุป>
/// <param name="fiId">ดัชนีคอลัมน์</param>
/// <returns>ชื่อคอลัมน์</returns>
สตริงส่วนตัว GetFunctionNameById (int fiId)
-
ผลลัพธ์ var = this._fiTable.AsEnumerable().Where(fi => Convert.ToInt32(fi["fiId"]) == fiId).FirstOrDefault();
กลับผลลัพธ์["fiName"].ToString();
-
ทั้งสองวิธีสอดคล้องกัน ฉันรู้สึกสะดวกกว่ามากในการสืบค้นด้วยวิธีนี้ที่แผนกต้อนรับโดยตรง
ให้ฉันอธิบายขั้นตอนนี้
this.objWSM.GetFunctionInfo().AsEnumerable().Where(f1 => f1["fiName"].ToString().Trim() == Name.ToString().Trim()).FirstOrDefault();
this.objWSM.GetFunctionInfo() เป็นวิธีการในการสืบค้นทั้งหมด
AsEnumerable().Where() ส่งคืนแถวทั่วไป ซึ่งสามารถสอบถามได้โดยใช้นิพจน์ LinQ
f1 => f1["fiName"].ToString().Trim() == Name.ToString().Trim())นิพจน์ Linq
F1 คือชื่อของแถวที่สร้างขึ้นใหม่
f1["fiName"] แน่นอนว่าเป็นชื่อคอลัมน์ในแถวนี้ => ตามด้วยเงื่อนไขและนำหน้าด้วยชุด
f1["fiName"].ToString().Trim() == Name.ToString().Trim() หมายความว่าหากมีค่าเท่ากันสองค่าในบรรทัดนี้ ให้เอาออก
FirstOrDefault(); หมายถึงการเข้าแถวแรก
ณ จุดนี้ปัญหาเกือบจะได้รับการแก้ไขแล้ว ตราบใดที่มีวิธีสอบถามทั้งสองคอลัมน์นี้ ให้เขียนทั้งสองวิธีนี้ไว้ที่แผนกต้อนรับ และมันก็จะโอเคทุกครั้ง ไม่จำเป็นต้องเขียนสองวิธีพิเศษลงไป เข้าถึงฐานข้อมูลซึ่งรู้สึกสะดวกมาก