Linq to SQL选择多个列

时间:2013-10-01 00:25:22

标签: c# linq linq-to-sql

我只想使用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>

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:3)

首先,字符串列表(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();

答案 2 :(得分:3)

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

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

我认为这解决了问题