Jestem w pierwszych kilku dniach z wykorzystaniem Linq w C#, i jestem ciekawy, czy istnieje bardziej zwięzły sposób pisania następujących.Jakikolwiek sposób użycia połączenia w Lambda Gdzie() na stole <>?
MyEntities db = new MyEntities(ConnString);
var q = from a in db.TableA
join b in db.TableB
on a.SomeFieldID equals b.SomeFieldID
where (a.UserID == CurrentUser &&
b.MyField == Convert.ToInt32(MyDropDownList.SelectedValue))
select new { a, b };
if(q.Any())
{
//snip
}
wiem, że gdybym chciał sprawdzić istnienie wartości w zakresie jednej tabeli, może po prostu użyć następujących:
if(db.TableA.Where(u => u.UserID == CurrentUser).Any())
{
//snip
}
Ale jestem ciekaw wiedzieć, czy istnieje sposób na wykonanie techniki lambda, ale gdzie spełniłby warunki pierwszej techniki w tych dwóch tabelach.
Przepraszamy za jakiekolwiek błędy lub jasność, będę edytować w razie potrzeby. Z góry dziękuję.
Myślę, że powinieneś przenieść "Convert.ToInt32 (MyDropDownList.SelectedValue)" do zmiennej lokalnej. –
Tak, istnieje (patrz post tvanfosson), jednak uważam, że kod, który napisałeś jest bardziej zrozumiały. Osobiście, jeśli muszę korzystać z łączenia, wolę nie korzystać z funkcjonalnego podejścia Linq. – AxelEckenberger
@Andrew, dlaczego przenieść go do zmiennej lokalnej? czytelność? @Obalix - Zgadzam się, ale czuję, że może to być spowodowane moim niepełnym zrozumieniem składni. Po tym, jak lepiej zrozumiem, co się dzieje i kiedy użyć czego, mam wrażenie, że wolę podejście funkcjonalne. –