我有一个使用 LINQ-to-SQL 的工具,有时我只需要我提供的一行文本数据。 过去我做过这样的事情:
results = (from x in [tablename] select new {myValue1 = "TextValue1", myValue2 = "TextValue2"}).Distinct();
但这需要在 [tablename] 中至少包含一行,这不再是我可以依赖的。
编辑:更好的例子来知道我为什么需要这样做;我需要这个查询(这是我可以在我的程序中编辑的全部内容)来返回"结果"中的所有内容并正确排序:
results = from z in (
from x in [tablename]
select new
{
myValue1 = "TextValue1",
myValue2 = "TextValue2"
}
).Union(
from y in [tablename]
select new
{
y.myValue1,
y.myValue2
}
)
orderby z.myValue1,z.myValue2
select new
{
z.myValue1,
z.myValue2
};
由于您的方法返回常规 IList,您可以做这样的事情吗?
var results = new ArrayList();
results.Add(new {myValue1 = "First", myValue2 = "First"});
results.AddRange(myLinqQuery.ToList());
return results;
。其中myLinqQuery
是现有查询。
对于一行,您可以使用
First()//如果没有要返回的值,则抛出错误
或
FirstOrDefault()//如果没有要返回的值,则不会抛出错误
results = (from x in [tablename] select new {myValue1 =
"TextValue1", myValue2 = "TextValue2"}).Distinct().FirstOrDefault();