LINQPAD는 다른 클래스 (예 : LINQ의 ACTION 샘플에서 책을 참조하는 방법)

StackOverflow https://stackoverflow.com/questions/1222009

문제

LINQPAD를 사용하여 비 풀링 응용 프로그램에서 LINQ 쿼리를 생성합니다.

다운로드에서 알았습니다 행동중인 LINQ 샘플, 예를 들어 예제 4.04, Intellisense는 "책"수업을 보여 주지만 나는 보이지 않습니다. 참조 또는 "사용"LINQPAD 도구의 문장은 다음과 같습니다. 샘플은 다음과 같습니다.

List<Book> books = new List<Book>() {
  new Book { Title="LINQ in Action" },
  new Book { Title="LINQ for Fun" },
  new Book { Title="Extreme LINQ" } };

var titles =
  books
    .Where(book => book.Title.Contains("Action"))
    .Select(book => book.Title);

titles.Dump();

"linqbooks.common, 비즈니스 개체, Book.linq"클래스가 정의 된 것 같습니다.

public class Book
{
  public IEnumerable<Author> Authors {get; set;}
  public String Isbn {get; set;}
  public String Notes {get; set;}
  public Int32 PageCount {get; set;}
  public Decimal Price {get; set;}
  public DateTime PublicationDate {get; set;}
  public Publisher Publisher {get; set;}
  public IEnumerable<Review> Reviews {get; set;}
  public Subject Subject {get; set;}
  public String Summary {get; set;}
  public String Title {get; set;}
  public String Test {get; set;}

  public override String ToString()
  {
    return Title;
  }
}

그러나이 수업에서 복사하고 LINQPAD를 사용하여 LINQ 문을 신속하게 작성하여 응용 프로그램에 다시 복사 할 수있는 방법은 어떻게 작동합니까?

도움이 되었습니까?

해결책

LINQPAD의 코드 편집기를 마우스 오른쪽 버튼으로 클릭하고 고급 쿼리 속성을 선택하면 추가 참조와 추가 네임 스페이스 가져 오기의 두 가지 대화 상자가 있습니다.

1) in 추가 참조, 선택하다 추가하다 그런 다음 클릭하십시오 검색 사용자 정의 어셈블리로 이동하십시오.

2) 그런 다음 추가 네임 스페이스 가져 오기, 입력하십시오 네임 스페이스 해당 어셈블리에서 가져오고 싶습니다.

다른 팁

LINQPAD를 통해 사용자 정의 어셈블리를 참조 할 수 있습니다 고급 쿼리 속성 눌러 열 수있는 대화 상자 F4.

실제로, Notepad와 같은 Book.linq와 같은 LINQ 파일을 보면 파일은 XML의 혼합과 마지막에 코드 스 니펫이 표시됩니다.

<Query Kind="Statements"> <!-- kind: Program, ... --->
  <Connection>...</Connection> <!-- Optional, if you have connection to db -->
  <Reference>[path]\[library]</Reference> <!-- references to your customized libraries -->
  <Reference>RuntimeDirectory&gt;System.Data.dll</Reference> <!-- example to System.Data.dll -->
  <Namespace>System.Data</Namespace> <!-- here are nodes for namespaces... -->
  <Namespace>MyLibrary.Common</Namespace>
</Query>

var conn = "Data Source=...";
....

순서로, LinqPad가 모든 정보를 얻는 방법에 대한 예제 LINQ 파일에서 자세한 정보를 찾을 수 있으며, 동적 어셈블리를 빌드하고 내부적으로 실행하여 결과를 UI로 되돌릴 수 있습니다.

그건 그렇고, 나는 지난 밤 에이 도구와 그 구조에 대한 이해에 대한 블로그를 썼습니다. linqpad .net 스 니펫 코드 IDE.

Edward, 우리는 LINQ를 Action Samples에서 구축 할 때 여러 가지 전략을 사용했습니다. 데이터베이스 장에서는 종종 데이터베이스 테이블을 기반으로 클래스를 자율적으로 중단하는 LINQPAD의 능력에 의존했습니다.

여기에서 참조하는 경우 (4.04) F4를 사용하여 사전 컴파일 된 클래스 라이브러리에 대한 참조를 추가했습니다. LinQPAD가 Visual Studio에서 생성 된 클래스와 다른 클래스를 생성 한 경우이 전략을 사용하여 특히 추적 변경과 관련하여 컨텍스트가 예상과 다르게 행동하게했습니다.

다른 경우에는 샘플의 나머지 부분과 함께 중첩 클래스 인라인을 추가하고 코드 편집기에서 "프로그램"옵션을 사용했습니다. 예 6.02를 참조하십시오. 이 경우, 우리는 실제로 LinqPad가 생성하는 생성 된 DataContext 클래스 내부에서 책 클래스를 삽입하고 있습니다. LinqPad가 생성하는 자동 생성 클래스가 도구 내부의 열을 쉽게 별칭으로 만들지 않기 때문에 열 이름을 별칭으로 만들고 싶을 때이 전략을 사용했습니다.

몇 가지 샘플, 특히 사용자 정의 확장 방법을 시연하는 곳에서 생성 된 컨텍스트 클래스를 마무리하도록 강요하는 또 다른 트릭을 수행해야했지만 (aparely ending the ending} 또는 종료 클래스 추가) 새 클래스를 시작하지만 닫히는 것은 생략되었습니다. 끝 브레이스/종료 클래스. 다운로드 된 샘플에서 예 2.16에서 이것을 볼 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top