1

在 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,我会做“选择 field1,field2,'Action & Adventure' 作为 MyTitles 的流派”。那么你如何在 Linq 中做到这一点。

赛斯

4

1 回答 1

3

您可以通过添加指定匿名类型的其他成员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(编译器会自动复制属性名)。

于 2010-09-24T01:29:07.863 回答