0

이 질문에는 이미 답변이 있습니다.

나는 linq을 내 프로젝트에서 SQL에 적용했고 시간이 많이 걸리므로 검색을 신속하게 만들었고 검색을했고 참조를 가져왔다.이리

그리고 .cs 코드는

public static Func<DataClassesDataContext, int, IQueryable<editor_j_inf>>
editordetail1 = CompiledQuery.Compile((DataClassesDataContext db, int a) =>
                 from p1 in db.editor_j_infs
                 where p1.ed_journal_id == a
                 orderby p1.editor_id descending
                 select p1);   //Its my precompile process

public void editordetail()
{
    DataClassesDataContext db = new DataClassesDataContext();
    var rr = editordetail1(db,Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value)));
    if (rr.Count() != 0)
    {
        txt_jtitle.Text = rr.First().j_title;
        txtissn_p.Text = rr.First().issn_p;           
    }        
}

그러나 오류는 다음과 같이 올 것입니다.enter image description here


2 답변


3

여기 라인 :

editordetail1(db,Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value)));

가능하면IEnumerable<T>. 그리고 전화 할 때Count()...에서rr.Count()그런 다음 결과를 열거했습니다.

그래서 전화 할 때First()아래에서 두 번째 시간을 열거하려고합니다.

txt_jtitle.Text = rr.First().j_title;

함수에서 반환 값을 변환 해보십시오.editordetail1목록으로 :

var rr = editordetail1(db,Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value)));
var rrList = rr.ToList();

그리고 이제Count속성을 List에 추가 한 다음 First ()를 호출하십시오.

if (rrList.Count() != 0) // use the List rrList
    {
        txt_jtitle.Text = rr.First().j_title; 
        txtissn_p.Text = rr.First().issn_p;           
    } 


0

다음 행을 변경해야합니다.

var rr = editordetail1(db,Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value)));
if (rr.Count() != 0)

에:

var rr = editordetail1.Invoke(db,Convert.ToInt32(Server.HtmlEncode(Request.Cookies["j_id"].Value))).FirstOrDefault();
if (rr != null)

연결된 질문


관련된 질문

최근 질문