我是LINQ的新手,想知道如何执行多个where子句.这就是我想要实现的目的:通过过滤掉某些用户名来返回记录.我尝试了下面的代码但没有按预期工作.
DataTable tempData = (DataTable)grdUsageRecords.DataSource;
var query = from r in tempData.AsEnumerable()
where ((r.Field<string>("UserName") != "XXXX") || (r.Field<string>("UserName") != "XXXX"))
select r;
DataTable newDT = query.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
我在这里先向您的帮助表示感谢!!!
我正在尝试使用"联盟"合并2个列表,因此我摆脱了重复.以下是示例代码:
public class SomeDetail
{
public string SomeValue1 { get; set; }
public string SomeValue2 { get; set; }
public string SomeDate { get; set; }
}
public class SomeDetailComparer : IEqualityComparer<SomeDetail>
{
bool IEqualityComparer<SomeDetail>.Equals(SomeDetail x, SomeDetail y)
{
// Check whether the compared objects reference the same data.
if (Object.ReferenceEquals(x, y))
return true;
// Check whether any of the compared objects is null.
if (Object.ReferenceEquals(x, null) || Object.ReferenceEquals(y, null))
return false;
return x.SomeValue1 == y.SomeValue1 && x.SomeValue2 == y.SomeValue2; …Run Code Online (Sandbox Code Playgroud) 我想使用LINQ将输入XML转换为输出XML,方法是在"Summary"字段上执行GROUPBY并将Balance字段向上扩展.
输入XML:
<Root>
<Account>
<Summary>Checking</Summary>
<Comprehensive>Interest Checking Account</Comprehensive>
<Currency>Dollar</Currency>
<Balance>10000000.000000</Balance>
</Account>
<Account>
<Summary>Savings</Summary>
<Comprehensive>Market Account</Comprehensive>
<Currency>Dollar</Currency>
<Balance>20000000.000000</Balance>
</Account>
<Account>
<Summary>Checking</Summary>
<Comprehensive>Interest Checking Account</Comprehensive>
<Currency>Dollar</Currency>
<Balance>50000000.000000</Balance>
</Account>
</Root>
Run Code Online (Sandbox Code Playgroud)
输出XML:
<Root>
<Account>
<Summary>Checking</Summary>
<Comprehensive>Interest Checking Account</Comprehensive>
<Currency>Dollar</Currency>
<Balance>60000000.000000</Balance>
</Account>
<Account>
<Summary>Savings</Summary>
<Comprehensive>Market Account</Comprehensive>
<Currency>Dollar</Currency>
<Balance>20000000.000000</Balance>
</Account>
</Root>
Run Code Online (Sandbox Code Playgroud)
我试过这个,但无法获取节点/元素:
XElement groupData = new XElement("Root",
chartData.Elements().GroupBy(x => x.Element("Summary").Value).
Select(g => new XElement("Account", g.Key, g.Elements("Comprehensive"),
g.Elements("Currency"),
g.Sum(
s =>
(decimal)
s.Element("Balance")))));
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.提前致谢.
我正在尝试为以下 Azure 搜索方法编写单元测试:
public async Task Write(ISearchIndexClient indexClient, Search search)
{
await UploadContents(indexClient, search.SearchContents);
}
private static async Task UploadContents(ISearchIndexClient indexClient, IReadOnlyCollection<dynamic> searchContents) => await Task.Run(() => indexClient.Documents.Index(IndexBatch.Upload(searchContents)));
Run Code Online (Sandbox Code Playgroud)
单元测试代码 1:
public async Task Write_Success()
{
var searchIndexClientMock = new Mock<ISearchIndexClient>();
searchIndexClientMock
.Setup(x => x.Documents.Index(It.IsAny<IndexBatch<Document>>(), It.IsAny<SearchRequestOptions>()))
.Returns(It.IsAny<DocumentIndexResult>()).Callback(() => IndexBatch.Upload(It.IsAny<IEnumerable<Document>>()));
var pushFunction = new SearchIndexWriter();
Search search = new Search();
await pushFunction.Write(searchIndexClientMock.Object, search);
//Assert, Verify checks
}
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
消息:System.NotSupportedException:不支持的表达式:... => ....Index(It.IsAny>(), It.IsAny()) 扩展方法(此处:DocumentsOperationsExtensions.Index)不能用于设置/验证表达式。
单元测试代码 2:
public async Task Write_Success()
{
var searchIndexClientMock …Run Code Online (Sandbox Code Playgroud) 有没有一种简单的方法,通过LINQ或Generics,来查明一个List中的元素是否都在另一个List中可用.
我目前正在使用Intersect来检查这个.
例如
List<string> list1; //{ 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 }
List<string> list2; //{ 1, 3, 9 }
list1.Contains(list2) == true
Run Code Online (Sandbox Code Playgroud)
提前致谢
linq ×3
c# ×2
generics ×2
.net ×1
azure ×1
distinct ×1
group-by ×1
linq-to-sql ×1
linq-to-xml ×1
list ×1
mocking ×1
moq ×1
unit-testing ×1