6

我只想使用 LINQ 从 MSSQL DB 中选择 2 列。

SQL应该是

select table.col1,table.col2 from table

我试过了

IList<string> myResults =
(
    from data in dbconn.table
    where table.col5 == null
    select new { 
        col1=data.Id.ToString(),
        col2=data.col2
    }
).Take(20).ToList();

但这没有用。

它说

cannot convert type  list <AnonymousType#1> to Ilist<string>
4

3 回答 3

11

您基本上是在尝试用匿名类型列表的条目填充字符串列表,但这是行不通的。

你有没有尝试过这样的事情?:

var list = from data in dbconn.table
           where table.col5 == null
           select new { 
            col1=data.Id.ToString(),
            col2=data.col2
           }

然后,您可以轻松地在循环中使用这些条目,例如

foreach(var element in list) {
//...
}

或者像一个列表

list.Take(20).ToList();
于 2013-10-01T00:36:11.507 回答
4

首先,字符串列表 ( List<string>) 在一个元素中只能有一个字符串,而不是两个(您在这里尝试执行的操作)将类型更改为 var 将修复您的异常,但不确定这是否是您想要的解决方案。

var myResults =
(
    from data in dbconn.table
    where table.col5 == null
    select new { 
        col1=data.Id.ToString(),
        col2=data.col2
    }
).Take(20).ToList();
于 2013-10-01T00:46:17.830 回答
3

您可以使用 linq Select 选择多个字段,如上面在各种示例中所示,这将作为匿名类型返回。如果你想避免这种匿名类型,这是一个简单的技巧。

var items = myResults.Select(f => new [] { f.Col1, f.Col2 }).SelectMany(item => item).Distinct();

我认为这可以解决问题

于 2015-01-03T13:24:26.347 回答