LINQ 쿼리 수정 방법은?
-
06-07-2019 - |
문제
이전보다 코드 아래에서 어떻게 짧게 할 수 있습니까? 짧고 간단한 방법이 필요합니다. 값이 하나 있기 때문에 Foreach Loop을 사용하고 싶지 않습니다.
public partial class Test : System.Web.UI.Page
{
StaffManagementEntities staffContext;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
LoadStaffPersonel();
}
}
void LoadStaffPersonel()
{
int selectedDepartman = Convert.ToInt32(Request.QueryString["SelectedDepartmanID"]);
string name="";
using (staffContext = new StaffManagementEntities())
{
var DepartmanName = from d in staffContext.Departman
where d.ID == selectedDepartman
select d;
foreach (Departman d in DepartmanName)
{
name = d.Name;
}
ObjectResult<StaffsPersonel> personalData = staffContext.GetPersonelData(name);
gvPersonel.DataSource = personalData;
gvPersonel.DataBind();
}
}
}
"var liffmanname"대신 문자열 값을 사용하는 방법
해결책
같은 것 :
string name = (from d in staffContext.Departman
where d.ID == selectedDepartman
select d.Name).First();
또는:
string name = staffContext.Departman.Where(d=>d.ID == selectedDepartman)
.First().Name;
다른 팁
이것이 당신이하려는 일입니까?
string name = (from d in staffContext.Departman
where d.ID == selectedDepartman
select d.Name).SingleOrDefault();
그만큼 Singleordefault 부서가 종료되지 않으면 이름 또는 null을 반환합니다.
업데이트:
- 현재 당신이 사용해야 할 것 같습니다. 첫 번째 방법 Ykaratoprak 댓글을 달았습니다. 그러나에 따르면 이 게시물 Single/Singleordefault는 Entity Framework 4.0에 추가됩니다.
현재 3.5 프레임 워크에서 사용할 수있는 "FirstOrdeFault"를 사용할 수 있습니다. 나는 그것이 3.0에 포함되었다고 생각하지만 확실하지 않습니다. 항목을 찾을 수없는 경우 (빈 문자열과 달리) NULL을 반환 할 것이라고 생각합니다 .... 그러나이를 두 번 확인하고 싶을 것입니다.
String name = (직원의 d에서 d에서 d d.id == selectedDepartman select d.name) .firstordEfault ();
제휴하지 않습니다 StackOverflow