代码之家  ›  专栏  ›  技术社区  ›  Seth Spearman

对于linq,如何从select运算符返回结果中的字符串const

  •  1
  • Seth Spearman  · 技术社区  · 14 年前

    在LinqPad中,我有以下查询语句…

    var genre = "Anime & Animation";
    var minRating = 3.0;
    var topNum = 30;
    
    var query = 
        (from g in Genres
        from t in g.Titles 
        where g.Name==genre
        && t.Instant.Available==true
        && t.AverageRating >= minRating
        orderby t.AverageRating descending 
        select new {t.Name, t.Rating, t.AverageRating, t.ShortSynopsis}).Take(topNum);
    
    query.Dump(string.Format("Top {0} {1} Instant Watch Movies with a {2:0.0} minimum average rating sorted by average rating in descending order.",topNum,genre,minRating));
    

    我想返回结果集中的流派字符串变量。

    另一种提问方式是,使用tsql,我会从mytitles中选择field1、field2、“action&adventure”作为流派。那么你在林肯怎么做呢?

    塞思

    1 回复  |  直到 14 年前
        1
  •  3
  •   Tomas Petricek    14 年前

    可以通过添加 PropertyName = <value> ,因此如果要添加属性 Genre 使用一些常量值,您可以编写:

    new { t.Name, t.Rating, t.AverageRating, 
          t.ShortSynopsis, Genre = "Action & Adventure" }
    

    类型的价值可能与 genre 变量或属性 g.Name 在查询中,因此可以使用此属性(而不是字符串文本):

    new { t.Name, t.Rating, t.AverageRating, 
          t.ShortSynopsis, Genre = g.Name } // Or 'Genre = genre'
    

    值得注意的是,如果在匿名类型(例如 t.Name )这只是一个写作的捷径 Name = t.Name (编译器自动复制属性名)。